常用的ajax使用方式:
$.ajax({
type:"post/get",
url:"url",
async:true/fasle,
data:{
value_name:value
},
success:function (data,status,ajaxclass) {
//处理返回的数据
},
error:function () {
//ajax失败时执行的方法
}
})
详细说明:
- type:传值类型,分为post和get两种
- url:传值地址
- async:是否异步,不写该属性时默认true。(异步是多线程,同步是单线程)
- data:传值,单个值可直接写,例如name,接口可以接受到name这个值,多个值用json格式,{传值名:值,传值名:值,……}的形式
- success:当ajax运行成功时的回调函数,参数一:data(名字任意)即为返回的值,参数二:status(名字任意)返回ajax的执行状态,这里返回success,参数三:ajaxclass(名字任意)返回当前ajax对象的一些数据。
- error:当ajax运行失败时的回调函数,一般用作报错提示。
复杂用法参数:
- dataType:预期服务器返回的数据类型。
- processData:一般情况下,通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是一个字符串),都会处理转化成一个查询吧字符串,以配合默认内容类型“application/x-www-form-urlencoded”。如果发送DOM树信息或其他不希望转换的信息,设置为false。默认为true。此属性在使用FormData进行data传值时属性值必须为false。
- contentType:默认值“application/x-www-form-urlencoded”。发送信息至服务器时内容编码类型。此属性在使用FormData进行data传值时属性值必须为false。
相关扩充:
①如果不加此参数,会出现不可预知的错误!比如某些加了安全控件的系统,不加此参数,会直接报错403,系统认为你的此次请求是在攻击系统。
②当ajax上传文件时,我们查看Request headers会发现content-Type这个的参数是multipart/form-data后面还会有boundary再接着一串随机字符串,前面的参数我们并不陌生,这是form表单上传文件必须的参数,当我们上传文件时,系统会自动生成一堆随机字符串,目的是为了防止文件中出现分隔符导致服务器无法正确解析文件的起始位置。说到这,我们发现在 JQuery ajax()方法中我们使ontentType = false,这不是冲突了吗?这当然没有,因为当我们查看这时的 Request headers,会发现还是有分界符。这就是因为当我们在 form 标签中设置了enctype = “multipart/form-data”,这样请求中的 contentType 就会默认为 multipart/form-data 。而我们在 ajax 中 contentType 设置为 false 是为了避免 JQuery 对其操作,从而失去分界符,而使服务器不能正常解析文件。