我正在尝试使用jquery发送ajax请求。在本教程中,我尝试了这个简单的脚本:
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()之前。那么这里有语法错误吗?
答案 0 :(得分:1)
如果您使用的是1.5之前的jQuery版本.ajax()
不支持promise接口,那么我认为您的脚本在尝试使用.done()
时会崩溃,这与处理停止在“等待”消息。
更新到最新版本(或至少1.5+),它应该可以工作。
答案 1 :(得分:0)
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 );
});