使用异步时jQuery没有收到回复

时间:2011-12-25 12:25:25

标签: jquery asynchronous

我正在使用此代码从服务器获取响应。但我想要异步,因为我需要显示进度。当我使用此代码时,我不会从服务器返回任何消息(仅将警报作为对象)。这是我的代码。有什么想法吗?

var msg = $.ajax({
    type: 'POST',
    url: '../pages/registration.php',
    async: true,
    data: {
        do: 'register'
    },
    beforeSend: function () {
        $("#Progress").show();
    },
    success: function (data, status) {
        $("#Progress").hide();
        $("#AckMsg").html(data);
    }
});
alert("aa" + msg);

4 个答案:

答案 0 :(得分:1)

立即使用几乎所有浏览器中提供的开发人员工具,确切了解ajax正在使用的Url。 我猜你的网址中的'..'似乎很可疑。

答案 1 :(得分:1)

将警报置于成功回调中。由于它是异步调用,因此您只能在成功回调中捕获响应。

success: function (data, status) {
        $("#Progress").hide();
        alert(data);// or you can write 'debugger' here if you are using firebug will break at this point and you can check what your remote call is returning.
        $("#AckMsg").html(data);
    }

同样在firebug中进入控制台,您可以查看通话的请求和响应。 如果您不习惯萤火虫,请尝试在IE或Chrome中使用开发者工具。

答案 2 :(得分:1)

从jQuery 1.5开始,$ .ajax()返回XMLHttpRequest(jqXHR)对象。这是您分配给var msg的对象,稍后会放入警报中。因此,当您描述它时,您会得到“警告为对象”。如果要提醒服务器返回的内容,请执行以下操作:

success: function (data, status) {
    $("#Progress").hide();
    $("#AckMsg").html(data);
    alert(data);
}

如果此操作将数据警告为空或未定义。检查您的ajax电话网址。

url: '../pages/registration.php',

我认为使用像这样的相对URL会向http://www.yoursite.com/../pages/registration.php发出ajax请求。这很可能不是你想要做的。

答案 3 :(得分:1)

也许你应该将函数挂钩到失败事件。

msg.fail(function(jqXHR, textStatus) 
{ 
    alert( "Request failed: " + textStatus ); 
});