首页 > 快晕了。为啥readyState和status状态码一直错误(一直是1和0),但是抓包数据返回都是正确的。

快晕了。为啥readyState和status状态码一直错误(一直是1和0),但是抓包数据返回都是正确的。

是红XHR发送请求并处理数据,但是发现request.readyState状态一直是1,request.status一直是0,但使用chrome开发工具network视图可以看到正确返回,header里显示status :200 ok.
是哪里出了问题。
代码如下:

<html>
<head>
<title>test page</title>
<meta charset="utf-8" />

</head>
<body>
    <h1>用户查询</h1>
    <label>请输入用户id:</label>
    <input id="searchid" type="text" name="id" /><br>
    <button id="search">查询</button><br>
    <p id="searchresult"></p>
    
    
<script>
document.getElementById("search").onclick = function(){
    //发送Ajax请求并处理
var request = new XMLHttpRequest();
request.open("get","search.php?id="+document.getElementById("searchid").value,true);
request.send();
// alert(request.readyState);
// alert(request.status);
request.onreadystatechange = function(){
//onreadystatechange当readystate改变时,就会触发该函数
    if(request.readystate === 4){
        if(request.status === 200){
               document.getElementByID("searchresult").innerHTML=request.responseText;
            }else{
               alert("发生错误,错误代码:"+request.status);  
            }
       
    }
}
    
}
</script>
</body>
</html>

问题我自己找到原因了:
1.JS函数是区分大小写的,代码中request.readystate中的S应该大写
其中一个getElementById中的D应该小写,今天回去抄写100遍
2.调试的时候,alert(request.readyState);结果时,应该在if(request.readystate === 4)判断完之后,结果才是正确的。因为readyState本来就是一个从0到4变化的过程。

为啥自己不能回答自己的问题。。。。。。。。只能写这里了。麻烦各位了。抱歉。


问题我自己找到原因了:
1.JS函数是区分大小写的,代码中request.readystate中的S应该大写
其中一个getElementById中的D应该小写,今天回去抄写100遍
2.调试的时候,alert(request.readyState);结果时,应该在if(request.readystate === 4)判断完之后,结果才是正确的。因为readyState本来就是一个从0到4变化的过程。

【热门文章】
【热门文章】