是红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变化的过程。