如何进行AJAX调用等待服务器端响应?

时间:2011-12-31 23:55:22

标签: ajax jquery

这些是我的文件:

的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是异步的,不会等待来自服务器的响应,但我想知道如何修复它并让这个调用等待响应。

3 个答案:

答案 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()事件。

有关详细说明,请参阅以下页面。 “设置”的文档是您想要查看的内容:

http://api.jquery.com/jQuery.ajax/