XML http 响应不起作用
XML http response doesn't work
>我为我的网站创建了一个程序,该程序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);
}
我的 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);
?>
感谢您的帮助!
啊,老式的 AJAX 请求。他们带回了这样的...噩梦。我可以建议jQuery吗?Get 是如此方便的功能
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
表。
相关文章:
- 我的响应菜单在移动版中不起作用
- Ajax:Ajax响应中的链接不起作用
- 带有 AJAX 响应或 AJAX 响应的 IF 条件.响应.Text 不起作用
- 如何让Webworker真正响应,以及为什么setTimeout()不起作用
- 在表中显示ajax响应不起作用
- jquery在调整大小时响应不起作用
- angularjs不起作用的Json响应
- 响应式导航栏不起作用,品牌变得一团糟
- jquery.click()在Ajax 403响应后不起作用
- 单击事件在响应菜单中不起作用
- 移动响应表单不起作用
- $.ajax、$.post 或 $.get 不起作用,无法使用响应
- 返回了JS对象,但响应文本不起作用
- 响应式 jQuery 不起作用:单击宽度低于 768px 并将鼠标悬停在 768px 上方
- 响应式幻灯片.js插件在IE中不起作用
- ajax 响应包括 image,onClick 事件对图像不起作用 jQuery
- jQuery 自定义内容滚动器在引导表响应式上不起作用
- 响应式语音在 Safari 中不起作用
- jQuery AJAX 调用在 Firefox 中有效,但在 IE 中不起作用 - 返回有效响应
- FB.登录响应会话不起作用