这些都是我的文件:如何使AJAX调用等待服务器端响应?
的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是异步的,不会等待来自服务器的响应,但我想知道如何解决它并使此呼叫等待响应。
欢迎堆栈溢出!请注意,您已经编写了一个易受[SQL注入](http://en.wikipedia.org/wiki/SQL_injection)漏洞影响的脚本,因为您尚未清理SQL查询中的任何用户提供的变量。请使用[PHP Prepared Statements](http://php.net/manual/en/pdo.prepared-statements.php)来防止这些漏洞。谢谢。 – sarnold 2012-01-01 00:04:04