ajax request.done使脚本崩溃了吗?
问题描述:
我想发送一个使用jQuery的ajax请求。从本教程中,我试试这个简单的脚本:ajax request.done使脚本崩溃了吗?
function show(){
$("#mesg").html("begin");
var request = $.ajax({
type: "POST",
url: "some url",
data: '{"user_name": "NAME"}',
contentType: "application/json; charset=utf-8",
dataType: "json"
});
$("#mesg").html("waiting");
request.done(function(){
$("#mesg").html("done sending");
});
$("#mesg").html("still waiting");
request.fail(function(){});
$("#mesg").html("end of function");
}
因此请求应该失败,#mesg的内容应该是“函数结束”。但是,我得到的是“等待”,这是request.done()之前。那么这里是否有语法错误?
答
如果您使用的是jQuery的版本早于1.5 .ajax()
不支持承诺接口,所以我会认为,当它试图使用.done()
脚本会崩溃,并且将与处理的停止一致“等待”消息。
更新到最新版本(或至少1.5+),它应该可以工作。
+0
谢谢!这解决了我的问题:-) – Thien 2012-02-06 00:23:27
答
来自jquery文档的示例是这样的。你有数据引用你的数据可能会删除这些并删除引号周围的参数名称,只留下引号中的值。并确保你的参数名称是正确的。
您还应该捕获从帖子中获得的“msg”。如下面的例子。
var menuId = $("ul.nav").first().attr("id");
var request = $.ajax({
url: "script.php",
type: "POST",
data: {id : menuId},
dataType: "html"
});
request.done(function(msg) {
$("#log").html(msg);
});
request.fail(function(jqXHR, textStatus) {
alert("Request failed: " + textStatus);
});
您使用的是哪个版本的jQuery?如果它早于1.5,'.ajax()'不支持promise接口,所以我会认为你的脚本在尝试使用'.done()'时会崩溃,并且这与处理停在“waiting”信息。你在控制台中是否有任何错误? – nnnnnn 2012-02-04 01:03:36
这就是问题所在!显然我从w3school复制了这个:src =“http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js”,并没有注意到它不是最新的。拧我!非常感谢! – Thien 2012-02-04 01:32:29
不客气。从那以后,我发布了我的评论作为答案... – nnnnnn 2012-02-04 01:35:50