一个 Http Get 请求的问题
首先列出代码:
var httprequest = new XMLHttpRequest();
var time = new Date();
if (httprequest) {
for (var i = 0; i < 1; i++) {
httprequest.onreadystatechange = function () {
if (httprequest.readyState == 4) {
alert("OK");
}
};
httprequest.open("GET", http://www.baidu.com, false);
httprequest.send(null);
}
}
alert(new Date() - time);
代码功能:
代码使用 ajax HTTP GET 请求百度主页,readyState 等于 4 后,alert 弹出对话框提示成功,然后再弹出对话框显示此次 HTTP GET 请求所消耗的时间。
下面便是问题所在:
对于 IE8 浏览器:先弹出 OK 对话框,然后弹出消耗时间对话框。一切正常。
对于 Chrome10 浏览器:只弹出了 OK 对话框,没有弹出消耗时间对话框。抓包发现请求已经发送成功了。
对于 Firefox3.6 浏览器:任何对话框都没有弹出。抓包发现请求已经发送成功了。
现在问题是,为啥 Chrome10、Firefox3.6 不会如期的弹出对话框呢?实际上相应代码是运行到了的。
------解决方案--------------------
JScript code
httprequest.open("GET", http://www.baidu.com, false);
------解决方案--------------------
我FF显示的是这样子的错,求高手解答:
uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.send]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: file:///C:/Documents%20and%20Settings/Administrator/%E6%A1%8C%E9%9D%A2/b.html :: <TOP_LEVEL> :: line 12" data: no]
------解决方案--------------------
这个原因说不清楚……但是你为什么要这么做?
open第三个三处设为false的话是同步调用,这样alert(new Date() - time)取到的肯定比实际耗费的时间要长,因为之前弹窗一次,确定之后它才能得到执行
如果想想显示请求所耗费的时间 直接在回调方法中写就行了