所以,我有一个调用服务的ajax帖子,并返回一个我想在成功时解析的对象。
我在vs2010中运行它,它仅在我单步执行ajax后置代码时才有效,并且只在部分时间内有效。
此调用基本上与我所做的其他页面相同,所以我真的很困惑为什么这不起作用。
$.ajax({
type: "POST",
url: webMethod,
data: parameters,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (obj) {
alert("Success");
parseStart(obj.d, id, idnum, parseType);
},
error: function (e) {
alert("Failure. :" + e);
}
});
这是非常标准的,我不知道为什么会这样做。我只是希望有人之前经历过这样的事情。就像我说的那样,如果我单步执行ajax代码然后它就会成功。如果我不介入它就好像它永远不会成功或失败.....这真的很奇怪。 (所以我没有看到我的提醒等,如果我不介入它)我有一个建议,可能是我的对象的大小,我从我的服务返回所以我把它修剪到接近于零,没有帮助。
非常感谢任何关于此的想法指示。我目前难倒。
答案 0 :(得分:0)
可能是服务器没有返回200.也许它返回304未修改或临时重定向。
请参阅Difference between .success() and .complete()?
.success()仅在您的网络服务器响应200 OK HTTP标头时被调用 - 基本上当一切都很好时。
然而,无论ajax调用是否成功,都会调用.complete()。
答案 1 :(得分:0)
我想我知道它是什么。 ajax调用是异步的,对吧?因此需要一段时间才能得到回应。但是,如果此调用是通过链接或表单按钮生成的,并且您在此处未返回false,则会发生正常的get或post。只需在调用$ .ajax();
后返回false$.ajax({
type: "POST",
url: webMethod,
data: parameters,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (obj) {
alert("Success");
parseStart(obj.d, id, idnum, parseType);
},
error: function (e) {
alert("Failure. :" + e);
}
});
return false;
答案 2 :(得分:0)
好的,经过长时间的故障排除。我将按钮调用切换到正文onload而不是单击按钮,这样做可以正常工作。这是因为我使用了一个asp按钮,这个按钮在点击我的帖子时产生了一个回调。然后我删除了我的asp按钮并用输入按钮替换了它们。