$.ajax()的常用参数
type: 类型: String 请求方式 (“POST“ 或 “GET“), 默认为 “GET“。(没有methods参数)
url: 类型: String (默认: 当前页面地址)
data:前端发送到后台的数据,可以是json对象,也可以是json形式的字符串。
注意:后台接受的参数形式,不支持的数据类型,发送不会成功
{“type“:1,“phone“:phoneCon,“pwd“:pwdCon}
JSON.stringify( {“type“:1,“phone“:phoneCon,“pwd“:pwdCon} ),
dataType: 后台返回的数据的类型,默认“text“
“text“: 返回纯文本字符串。
“json“:返回json对象。
“script“: 把响应的结果当作 JavaScript 执行。
如果dataType是“json“,而后天返回的是字符串,则数据通过error对应的函数返回数据
error: 请求失败时调用此函数。
success: 请求成功后的回调函数 ajax不一定有返回的信息,如:给数据库添加留言,可以不需要返回信息
complete: 请求完成后回调函数
beforeSend: 请求发送前的回调函数,用来修改请求发送前jqXHR(在jQuery 1.4.x的中,XMLHttpRequest)对象,此功能用来设置自定义 HTTP 头信息,等等。该jqXHR和设置对象作为参数传递。
timeout: 类型: Number 设置请求超时时间(毫秒)
cache: 类型: Boolean 是否缓存 默认: true, dataType为“script“和“jsonp“时默认为false
注意: 设置cache为 false将在 HEAD和GET请求中正常工作。它的工作原理是在GET请求参数中附加“_={timestamp}“(译者注:时间戳)。
jsonp: 在一个jsonp请求中重写回调函数的名字。这个值用来替代在“callback=?“这种GET或POST请求中URL参数里的“callback“部分
async:是否异步请求,默认true
false(同步请求时),可以再ajax内进行赋值,不会出现赋值顺序错误的问题
ajax外部变量,获取ajax内部的值时,必须是同步请求,如:将ajax内的值作为函数的返回参数
ajax的请求过程
1、新建ajax对象(IE6不兼容) 如:xhr = new XMLHttpRequest();
IE6下,Ajax对象的兼容方法
方法一:var xhr = null;
try { xhr = new XMLHttpRequest(); }
catch (e) { xhr = new ActiveXObject(‘Microsoft.XMLHTTP‘); }
方法二:var xhr = null;
if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); }
else { xhr = new ActiveXObject(‘Microsoft.XMLHTTP‘); }
2、发送请求的准备工作 通过get、post发送某个信息,但是这一步无法显示出来,相当于网址,post方式,文件信息地址在xhr.send();中
如:xhr.open(‘get‘,‘1.php‘,true); xhr.open(‘post‘,‘2.post.php‘,true);
1.打开方式:get、post、request
2.地址(接口)
静态地址,如:xhr.open(‘get‘,‘1.txt‘,true);
动态地址:如:xhr.open(‘get‘,‘1.php‘,true);
get方式,发送数据到后台 如:xhr.open(‘get‘,‘2.get.php?username=leo&age=30&‘,true);
1.缓存引起无法刷新:在url?后面连接一个随机数,时间轴如:xhr.open(‘get‘,‘2.get.php?username=leo&age=30&‘ new Date().getTime(),true);
2.中文乱码无法显示:编码encodeURI 如:xhr.open(‘get‘,‘2.get.php?username=‘ encodeURI(‘刘伟‘) ‘&age=30&‘ new Date().getTime(),true);
post方式,发送数据到后台
1.post没有缓存问题
2.中文无需编码
3.数据放在send()里面作为参数传递 如:xhr.send(‘username=刘伟&age=30‘);
在send()前面,必须申明发送的数据类型 如:xhr.setRequestHeader(‘content-type‘, ‘application/x-www-form-urlencoded‘);
3.是否异步
true:异步:非阻塞 前面的代码不会影响后面代码的执行
false:同步:阻塞 前面的代码会影响后面代码的执行 很少使用同步(除非后面的操作,需要前面的数据)
3、提交发送的请求 如:xhr.send();
4、等待服务器返回内容 返回内容为字符串,必要时需要转成对象?????
返回正确内容的条件:1、readyState值发生改变 2、readyState属性值为4 3、status属性值为200
onreadystatechange事件 当状态值发生改变时触发
readyState属性:请求状态
0 未初始化)还没有调用open()方法
1 (载入)已调用send()方法,正在发送请求
2 (载入完成)send()方法完成,已收到全部响应内容
3 (解析)正在解析响应内容
4 (完成)响应内容解析完成,可以在客户端调用了
status属性:服务器(请求资源)的状态码(http状态码)
1、消息(1字头)
2、成功(2字头) 如:200 OK
3、重定向(3字头)
4、请求错误(4字头)
5、服务器错误(5、6字头)
返回的内容
responseText:ajax返回的内容,就存在于这个属性下面,以字符串的形式