这些是我的文件:
的index.html
<form action="#" method="POST">
<label for="Username">Username :</label><br/> <input type="text" id="Username" name="username"/><span id="usr"></span><br/>
<label for="Email">Email :</label><br/> <input type="text" id="Email" name="email"/><br/>
<input type="submit" value="Register" id="submit"/>
</form>
userresponse.php
<?php
require ("DBC.php");
$usern = $_POST["username"];
function isAvailable($str)
{
$sql= "SELECT username FROM mytable WHERE username = '$str'";
$result=mysql_query($sql)or die();
$count = mysql_num_rows($result);
if($count>0)
return true;
else
return false;
}
if (isAvailable($usern) == true)
echo "false";
else
echo "true";
?>
checkuser.js
$(document).ready(function() {
var usrn = $("#Username");
var usr = $("#usr");
usrn.blur(function(){
if(usrn.val()=="")
{
usr.html("Empty field");
return false;
}
else
{
var username = usrn.val();
usr.html('Cheking username...');
alert(username);
$.ajax({
url: "userresponse.php",
type: "POST",
data: username,
success: function (data) {
if(data.val() == "true")
{
usr.html('Available username');
}
else if(data.val() == "false")
{
usr.html('Username already taken');
}
}})
return data.val();
}
});
});
我知道AJAX是异步的,不会等待来自服务器的响应,但我想知道如何修复它并让这个调用等待响应。
答案 0 :(得分:0)
我自己没有任何经验,但这不是async
选项的用途吗? http://api.jquery.com/jQuery.ajax/
$.ajax({
url: "userresponse.php",
/* etc */
async: false,
/* etc */
})
答案 1 :(得分:0)
你已经在$ .ajax调用中添加了一个回调选项“success:” 你有什么烦恼?它已经等待请求完成并获得响应
答案 2 :(得分:-1)
在您的代码中,将async属性设置为“true”。
默认情况下,async属性为“true”,但将其设置为false将强制该函数等待,直到它得到响应/超时。
另一种处理方法是使用success()和error()事件。
有关详细说明,请参阅以下页面。 “设置”的文档是您想要查看的内容: