這些都是我的文件:如何使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