在ajax中提交有两种形式:同步和异步
xmlHttp.open("GET", url, true);
xmlHttp.open("GET", url, false);
同步:提交后等待服务器的响应,接收服务器返回的数据后再执行下面的代码
异步:与上面相反,提交后继续执行下面的代码,而在后台继续监听,服务器响应后有程序做相应处理,异步的操作好处是不必等待服务器而可以继续在客户端做其它事情。
示例:
function dbOnclick(){
var req = new XMLHttpRequest();
var url="www.google.cn";
req.open( " GET " ,url, true ); // 与服务端建立连接(请求方式post或get,URL,true表示异步,false表示同步)
req.onreadystatechange = callback; // 指定回调函数
req.send( null ); // 发送请求
alert("异步模式");//如果是异步请求,此句 紧接上句直接执行, 不用等服务器返回响应再执行,服务器响应有回调函数监视
//如果是同步请求,此句要等服务器返回响应才能执行
}
// 回调函数,对服务端的响应处理,监视response状态
function callback(){
if (req.readystate == 4 ) // 请求状态为4表示成功
{
if (req.status == 200 ) // http状态200表示OK
{
doSomething; // 所有状态成功,执行相应代码
alert(req. responseText );
}else{
alert( " 服务端返回状态 " + req.statusText);
}
}else{
alert("数据加载中...");
}
}
XMLHttpRequest 对象的方法与属性
方 法 | 描 述 |
abort() | 停止当前请求 |
getAllResponseHeaders() | 把 HTTP 请求的所有响应首部作为键 / 值对返回 |
getResponseHeader("header") | 返回指定首部的串值 |
open("method", "url") | 建立对服务器的调用。 method 参数可以是 GET 、 POST 或 PUT 。 url 参数可以是相对 URL 或绝对 URL 。这个方法还包括 3 个可选的参数 |
send(content) | 向服务器发送请求 |
setRequestHeader("header", "value") | 把指定首部设置为所提供的值。在设置任何首部之前必须先调用 open() |
属 性 | 描 述 |
onreadystatechange | 每个状态改变时都会触发这个事件处理器,通常会调用一个 JavaScript 函数 |
readyState | 请求的状态。有 5 个可取值: 0 = 未初始化, 1 = 正在加载, 2 = 已加载, 3 = 交互中, 4 = 完成 |
responseText | 服务器的响应,表示为一个串 |
responseXML | 服务器的响应,表示为 XML 。这个对象可以解析为一个 DOM 对象 |
status | 服务器的 HTTP 状态码( 200 对应 OK , 404 对应 Not Found (未找到),等等) |
statusText | HTTP 状态码的相应文本( OK 或 Not Found (未找到)等等) |