0

所以,我有一个 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 代码然后它才会成功。如果我不通过它,就好像它永远不会成功或失败......这真的很奇怪。(所以如果我不通过它,我看不到我的警报等)我有一个建议,它可能是我从我的服务返回的对象的大小,所以我将它修剪到几乎没有并且没有帮助。

对此的任何想法方向都非常感谢。我目前很难过。

4

3 回答 3

0

可能是服务器没有返回 200。可能是返回 304 未修改或临时重定向。

请参阅.success() 和 .complete() 之间的区别?

.success() 仅在您的网络服务器以 200 OK HTTP 标头响应时才被调用 - 基本上是在一切正常的情况下。

但是,无论 ajax 调用是否成功,都会调用 .complete()

于 2012-05-21T16:39:41.537 回答
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;
于 2012-05-21T16:40:12.197 回答
0

好的,经过长时间的故障排除。我将按钮调用切换到 body onload,而不是单击按钮,这样做没有错误。这是由于我使用了一个 asp 按钮,该按钮在点击破坏我的帖子时会产生回调。然后我删除了我的 asp 按钮并用输入按钮替换了这些按钮。

于 2012-05-21T21:20:31.207 回答