ASP页面中,在服务器端运行的ajax中“.waitForResponse(1)” 是啥意思?

<script language=javascript runat=server>
xh=new ActiveXObject("Msxml2.ServerXMLHTTP.6.0");
……
while (xh.readyState != 4) {
xh.waitForResponse(1);
……
</script>

请问上面这段代码中,“.waitForResponse(1)”这是什么意思?为什么我在这句的前后输出“xh.readyState ”,结果就不一样了(前输出结果是1,后输出结果是4)?

请大侠帮忙解释一下。越具体越好!先谢过~

第1个回答  2011-07-21
就是用来等待响应的
8. waitForResponse 在使用异步方式发送请求时,可以用这个方法来控制请求的进程。在服务端脚本中,不可以像客户端那样直接使用回调函数来控制异步请求,也没有相应的函数来使用程序休眠一定的时间,因此,为了等待请求返回,我们可以使用这个方法来等待一定时间。追问

waitForResponse (1) 是等待到了什么响应?
我用当前这个AJAX访问的页面SQL要执行至少好几分钟,可为什么我浏览这个页面时没一秒钟结果就返回回来了?而且还是个4(执行完成)的状态.我看数据库,后面那个页面的SQL根本没执行啊

第2个回答  2011-07-21
响应返回结果前后的区别吧 。

先确认下,你响应的页面SQL语句是否正确,页面能正确运行。追问

响应的页面SQL语句没问题,页面单独运行正常

追答

if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
}
试试; 如果有你的完整代码就更容易检查了

本回答被提问者采纳
第3个回答  2011-07-21
readyState的这五种状态
(0)未初始化
此阶段确认XMLHttpRequest对象是否创建,并为调用open()方法进行未初始化作好准备。值为0表示对象已经存在,否则浏览器会报错--对象不存在。

(1)载入
此阶段对XMLHttpRequest对象进行初始化,即调用open()方法,根据参数(method,url,true)完成对象状态的设置。并调用send()方法开始向服务端发送请求。值为1表示正在向服务端发送请求。

(2)载入完成
此阶段接收服务器端的响应数据。但获得的还只是服务端响应的原始数据,并不能直接在客户端使用。值为2表示已经接收完全部响应数据。并为下一阶段对数据解析作好准备。

(3)交互
此阶段解析接收到的服务器端响应数据。即根据服务器端响应头部返回的MIME类型把数据转换成能通过responseBody、responseText或responseXML属性存取的格式,为在客户端调用作好准备。状态3表示正在解析数据。

(4)完成
此阶段确认全部数据都已经解析为客户端可用的格式,解析已经完成。值为4表示数据解析完毕,可以通过XMLHttpRequest对象的相应属性取得数据。追问

我知道五种状态,我不明白的是,为什么我的SQL没执行,但状态却返回了执行完成

追答

我觉得是你SQL判断运行的ASP页面代码有误的,你不防把参数直接在到ASP面页,运行ASP页面,看ASP页面的运行时输出的值是否是你想要的,是否判断正确的,使输出值正确

追问

我已经将执行SQL的页面单独运行了一下,没有问题,所以才有现在这个疑惑的

追答

把这句代码xh.waitForResponse(1);
换成ajax.responseText;

追问

换后报错如下:
msxml6.dll 错误 '8000000a'

完成该操作所需的数据还不可使用。

ASP页面中,在服务器端运行的ajax中“.waitForResponse(1)” 是...
就是用来等待响应的 8. waitForResponse 在使用异步方式发送请求时,可以用这个方法来控制请求的进程。在服务端脚本中,不可以像客户端那样直接使用回调函数来控制异步请求,也没有相应的函数来使用程序休眠一定的时间,因此,为了等待请求返回,我们可以使用这个方法来等待一定时间。

相似回答