+ -
当前位置:首页 → 问答吧 → 一个 Http Get 请求的问题

一个 Http Get 请求的问题

时间:2011-03-15

来源:互联网

首先列出代码:
  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 不会如期的弹出对话框呢?实际上相应代码是运行到了的。

作者: xt_xiaotian   发布时间: 2011-03-15

JScript code
httprequest.open("GET", http://www.baidu.com, false);

为毛没有引起来?不是这个原因吧

作者: ldq67123   发布时间: 2011-03-15

我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]

作者: ldq67123   发布时间: 2011-03-15

这个原因说不清楚……但是你为什么要这么做?
open第三个三处设为false的话是同步调用,这样alert(new Date() - time)取到的肯定比实际耗费的时间要长,因为之前弹窗一次,确定之后它才能得到执行
如果想想显示请求所耗费的时间 直接在回调方法中写就行了

作者: inetfuture   发布时间: 2011-03-15

引用 2 楼 ldq67123 的回复:

我FF显示的是这样子的错,求高手解答:
uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.send]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "J……

我上面的代码有点问题,应该将 http://www.baidu.com 用引号括起来,然后或许就不会出你刚才的问题了。

作者: xt_xiaotian   发布时间: 2011-03-15

引用 3 楼 inetfuture 的回复:

这个原因说不清楚……但是你为什么要这么做?
open第三个三处设为false的话是同步调用,这样alert(new Date() - time)取到的肯定比实际耗费的时间要长,因为之前弹窗一次,确定之后它才能得到执行
如果想想显示请求所耗费的时间 直接在回调方法中写就行了

消耗的时间较长我知道,我的主要问题是我上面Firefox、Chrome 不会如期的弹出对话框。

作者: xt_xiaotian   发布时间: 2011-03-15

这个内部运行机制 各个浏览器有不同 我一直也没弄明白 光说readystate的变化就是不一样的……帮顶吧

作者: inetfuture   发布时间: 2011-03-15