任何人都可以帮助或指导我找出为什么下面的代码不会按预期运行(即警告来自php的回声),而是警告“发生了负面的事情”?
我的Javascript代码如下:
window.onload = function(){
var regForm = document.getElementById("register").onsubmit = checkForm;
}
//Let's see if this user already exists
function checkForm(){
alert("You pressed Register!");
var cc = document.getElementById("un3").value;
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
alert("You are using XML HTTP REQUEST");
}else{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
alert("YOU ARE USING ACTIVE X OBJECT");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
alert(xmlhttp.responseText);
return false;
}else{
alert("Something negative happened");
}
}
xmlhttp.open("GET","user_exists.php?q="+cc,true);
xmlhttp.send();
}
我的php文件被简化以使这个东西起作用:
<?php
$q=$_GET["q"];
echo "something good happened";
?>
答案 0 :(得分:0)
那是因为onreadystatechange
也是changes when connecting before the result is there。
试试这个:
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4) {
// only check when state is "the communication is done"
if (&& xmlhttp.status==200){
alert(changes when connecting before the result is therexmlhttp.responseText);
return false;
}else{
alert("Something negative happened");
} else {
// ignore other states
}
}
更好的方法是使用像jQuery或dojo这样不错的JavaScript库,这样你就不必自己完成所有这些了。</ p>
答案 1 :(得分:0)
试试这个:
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
alert(xmlhttp.responseText);
return false;
}else{
alert("Something negative happened");
}
}
}
readyState多次出现,而不是总是4次。 看看this question
我更愿意从请求中取出响应,以保持代码清洁。在你的情况下:
xmlhttp.onreadystatechange=responshandler;
function responsehandler(){
//here the response code
}
请确保您在函数外部声明var xmlhttp;
以使其全局化。