2012-07-29 40 views
0

我在我的页面上有多个javascript ajax请求。现在,在一个特定的ajax调用中(由onclick事件触发),我重复收到3条错误消息。在检查reuest.readyState时,我发现每次出现错误时,它已准备好状态分别为1,2和3,然后工作(显然,readyState = 4)。Ajax请求不工作3次,然后工作

这里是Ajax请求,我向服务器发送:

function fetch(parameter){ 
var myrequest=new ajaxRequest() 
myrequest.onreadystatechange=function(){ 
if (myrequest.readyState==4){ //This property is not equal to "4" for 3 calls 
    if (myrequest.status==200 || window.location.href.indexOf("http")==-1){ 
     // Code to be executed for successful call 
     } 
    } 
else{ 
    alert("Error in Request. Request State is: " + myrequest.readyState); 
} 
} 

myrequest.open("GET", url, true) 
myrequest.send(null) 
} 

在触发onclick事件,我得到的错误是:在请求

错误。请求状态为:1

请求错误。请求状态为:2

请求错误。请求状态是:3

请求的问题是什么?

+1

没有问题。 Ajax请求会经历各种状态,这就是为什么您只需要第四个请求。在那个州,收到了答复。请参阅https://developer.mozilla.org/en/AJAX/Getting_Started#Step_2_.E2.80.93_Handling_the_server_response。只要删除'else'。 – 2012-07-29 14:59:04

+0

@Felix King:是的,这是正确的,但我也有其他类似的请求,它们具有完全相似的结构(if-else循环),但没有传递给它们的参数。他们没有表现出这样的错误,为什么只有这样的表现呢?是由于onclick事件还是完全由于参数或其他原因? – 2012-07-29 15:06:14

+0

我不知道你的其他代码,所以我不知道。 – 2012-07-29 15:07:32

回答

1

那些是XMLHTTPRequest的(AJAX)规定,其中:

1 =>装载

2 =>加载

3 =>互动

4 =>准备

在如图4所示,ajax请求被视为完成并且可以访问返回的数据。

您应该放弃else条件。

+0

是的,这是正确的,但我也有其他类似的请求,具有完全相似的结构(if-else循环),但没有传递给它们的参数。他们没有表现出这样的错误,为什么只有这样的表现呢?是由于onclick事件还是完全由于参数或其他原因? – 2012-07-29 15:07:13

+1

在这里,请阅读http://www.quirksmode.org/blog/archives/2005/09/xmlhttp_notes_r_2.html – 2012-07-29 15:08:42