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