高手回答啊!Ajax顺序问题?

来源:百度知道 编辑:UC知道 时间:2024/05/06 17:11:27
ajax有个固定语法格式,先open方法,创建一个新的http请求,并指定此请求的方法、URL以及验证信息(用户名/密码),再指定当readyState属性改变时的事件处理句柄。(onreadystatechage),里面就有两个判断一个readyState返回当前请求的状态,只读.。status 返回当前请求的http状态码.只读。执行完事件处理句柄的方法之后还要一个send方法(发送请求到http服务器并接收回应)??怎么send还是放到最后??前面status都已经判断是不是已经完成了啊!
前面回调函数已经判断http请求是否执行成功了,怎么后面还加个send方法(发送请求到http服务器并接收回应),这不是做完了,还发送请求吗? 再说也不是放到最后应该放到open之后呀

前面open只是设定请求的地址,以处理响应的函数。send才是真正把请求发送出去。
XHRObject.onreadystatechage=function_name;只是绑定了onreadystatechage事件发生时,哪个函数处理,此时并没有执行。send之后该事件才被触发。

readyState指向一个回调方法,并不是说你写了这句以后马上就执行回调方法。而是先通过send将请求发出去,服务器端有回应了再由该回调方法处理返回的信息。

例:
readyState=fun;//方法fun就是回调方法

function fun(){
//判断状态,进行处理。。。。。
}

补充:
send以后才把请求发向服务器,然后服务器返回了以后才由回调方法来进行判断,并读取数据,不是你程序写了那句话就马上执行的。你可以理解为是一预先定义的方法,直到服务器有了回应他才工作。

你顺序没搞清楚嘛. open只是设置下请求的地址和方式 send了才会去执行请求. readyState是在send了才执行的 不清楚的话放ff下的firebug里测试下

onreadystatechange指定的是回调函数,即当httpXMLRequest对象readystate属性变化时自动触发的函数,他一开始不会自动执行只有最后你send以后服务器端返回结果的时候readystate才会发生变化,会自动调用指定的回调函数。

没有顺序的!前面的是回调函数!发完数据之后,有哪类事件发生就调用哪个方法!