Javascript 一个关于IE8、Firefox3.6和Chrome的简单ajax问题

Javascript 一个关于IE8、Firefox3.6和Chrome的简单ajax问题,javascript,ajax,Javascript,Ajax,Javascript代码: var httprequest = new XMLHttpRequest(); var time = new Date(); if (httprequest) { httprequest.onreadystatechange = function () { if (httprequest.readyState == 4) { alert("OK"); } }; httprequest.open("GET", "http://ww

Javascript代码:

var httprequest = new XMLHttpRequest();
var time = new Date();
if (httprequest) {
  httprequest.onreadystatechange = function () {
    if (httprequest.readyState == 4) {
      alert("OK");
    }
  };
  httprequest.open("GET", "http://www.google.com", false);
  httprequest.send(null);
}
alert(new Date() - time);
IE8:好的,时间对话框将被提示 Chrome10:提示“确定”对话框,但不提示“时间”对话框 Firefox3.6:好的,时间对话框不会提示

为什么有些对话框不提示?

httprequest.send(null)在您的情况下根本不会返回-它会阻止js代码执行,因此该行之后的任何内容都不会执行-我无法告诉您为什么会这样做,可能是特定浏览器或其他东西上的具体实现

这里要做的是异步运行它:在调用“open”方法时将“false”更改为“true”:

另一方面,如果你想开始使用ajax,可以尝试一些javascript框架,比如说,作为一名js开发人员,这些框架为你提供了与浏览器无关的方法来处理DOM、事件、ajax等,让你的生活变得更加轻松。

maxima 你的代码很好,Andrey的答案很好我有两个注释:)

1-XMLHttpRequest无法在域外执行请求,如果您需要在域外执行服务器端执行页面请求


2-在Andrey note中,我很抱歉,我没有和他在一起,因为你应该先学习JavaScript的每一件事,成为一名专业人士,然后使用jquery,完全理解jquery所做的事情,我的开场白是不是某个库的用户,而不是成为JavaScript专业人士之前

谢谢!阻塞的原因是open方法的假参数。我想计算这个ajax请求的时间,并想同步。将此参数设置为true将解决此问题。1。谢谢你提醒我跨越原点。2.我尝试了jQuery库,jQuery为用户做了很多事情。
httprequest.open("GET", "http://www.google.com", true);