Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript XML http响应不';行不通_Javascript_Php_Validation_Xmlhttprequest - Fatal编程技术网

Javascript XML http响应不';行不通

Javascript XML http响应不';行不通,javascript,php,validation,xmlhttprequest,Javascript,Php,Validation,Xmlhttprequest,我已经为我的网站创建了一个程序,onkeyup验证用户名。它使用javascript和XMLHttpRequest。我不知道我的代码出了什么问题。js代码是: function search(username) { var xmlhttp, answer; if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else if

我已经为我的网站创建了一个程序,onkeyup验证用户名。它使用javascript和XMLHttpRequest。我不知道我的代码出了什么问题。js代码是:

    function search(username)
{
var xmlhttp, answer;
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
alert("Sorry, your browser seems to not support XMLHTTP functionality.");
}


xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4)
{
answer=xmlhttp.responseText;
if(compare_strings(answer,1))
{
document.getElementById("nameInfo").className="error";
document.getElementById("username").className="error";
document.getElementById("nameInfo").innerHTML="Please enter your desired username.";
}
else if(compare_strings(answer,2))
{
document.getElementById("nameInfo").className="error";
document.getElementById("username").className="error";
document.getElementById("nameInfo").innerHTML="The username <strong>"+username+"    </strong> is not allowed.";

}
else if(compare_strings(answer,3))
{
document.getElementById("nameInfo").className="error";
document.getElementById("username").className="error";
document.getElementById("nameInfo").innerHTML="The username <strong>"+username+"    </strong> has already been taken.";

}
else
{
document.getElementById("nameInfo").className="success";
document.getElementById("username").className="";
document.getElementById("nameInfo").innerHTML="Username <strong>"+username+"</strong>     is available.";
flag=1;

}
}
}
var url="ajax_search.php";
url=url+"?q="+username;
url=url+"&sid="+Math.random();
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
/*It has been assumed here that ajax_search.php is in the same directory.*/
xmlhttp.send(null);
}
函数搜索(用户名)
{
var-xmlhttp,答案;
if(window.XMLHttpRequest)
{
//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
else if(window.ActiveXObject)
{
//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
其他的
{
警报(“对不起,您的浏览器似乎不支持XMLHTTP功能。”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4)
{
answer=xmlhttp.responseText;
if(比较_字符串(答案1))
{
document.getElementById(“nameInfo”).className=“error”;
document.getElementById(“用户名”).className=“错误”;
document.getElementById(“nameInfo”).innerHTML=“请输入所需的用户名。”;
}
else if(比较_字符串(答案2))
{
document.getElementById(“nameInfo”).className=“error”;
document.getElementById(“用户名”).className=“错误”;
document.getElementById(“nameInfo”).innerHTML=“用户名”+用户名+“是不允许的。”;
}
else if(比较字符串(答案3))
{
document.getElementById(“nameInfo”).className=“error”;
document.getElementById(“用户名”).className=“错误”;
document.getElementById(“nameInfo”).innerHTML=“用户名”+用户名+“已被获取。”;
}
其他的
{
document.getElementById(“nameInfo”).className=“success”;
document.getElementById(“用户名”).className=“”;
document.getElementById(“nameInfo”).innerHTML=“Username”+Username+“可用。”;
flag=1;
}
}
}
var url=“ajax\u search.php”;
url=url+“?q=“+用户名;
url=url+“&sid=“+Math.random();
open(“GET”,url,true);
xmlhttp.send(空);
/*这里假设ajax_search.php位于同一目录中*/
xmlhttp.send(空);
}
我的php代码可以工作。当我加载网站并在.php后面添加一个q时?它呼应了正确的答案。 下面是代码:
function chek_avail($username)
{
global $link;
$length=strlen($username);
if($length==0)
$res=1;
else if($length>5 && $length<15)
{
$res=4;
$query = "SELECT * FROM users";

if($result=$link->query($query)){
while($row=$result->fetch_assoc())
{
if(strcmp($username,$row['username'])==0)
$res=3;
}
}
}
else
$res=2;
echo $res;
}
$username=$_GET["q"];
chek_avail($username);
?>
功能检查可用($username)
{
全球美元联系;
$length=strlen($username);
如果($length==0)
$res=1;
else if($length>5&&$lengthquery($query)){
而($row=$result->fetch_assoc())
{
if(strcmp($username,$row['username'])==0)
$res=3;
}
}
}
其他的
$res=2;
echo$res;
}
$username=$\u GET[“q”];
chek_avail($用户名);
?>

谢谢你的帮助

啊,老派的阿贾克斯请求。他们带回了这样的。。。噩梦。 我可以推荐jQuery吗?这是一个方便的功能

jQuery().get('your URL here', function(answer) {
    if(compare_strings(answer,1))...
    // the rest of your code here
});
就这样!您不再需要编写自己的AJAX了。适用于所有浏览器和不一致性。说真的,没有人再像你这样做了

现在,关于你的PHP。。。获取整个
users
表,然后循环查找用户名?让你的数据库来做这项工作怎么样

$query = "SELECT * FROM users WHERE username = (?)";
$stat = $link->prepare($query);
$stat->bind_param("s", $username);
$stat->execute();
$result = $stat->get_result();
$stat->close();

您可以从此处保留相同的代码,但您的数据库现在可以共享负载并告诉您
$username
是否在其中。这段代码是SQL注入安全的。更好的是,每次执行此操作时,您不会遍历整个
users

我建议您使用jquery来摆脱这个脚本混乱。老实说,我不知道怎么做。您在控制台中看到任何错误吗?我在控制台中找不到任何错误。我更改了php-现在好多了,谢谢。但是,我不知道如何使用jquery实现这一点(替换什么,留下什么)。我也不知道如何激活/安装jquery。我真的无法推荐足够的框架。编写自己的AJAX是我不建议任何人做的少数事情之一。顺便说一句,安装jQuery非常容易