【问题标题】:Ajax Request Randomly FailsAjax 请求随机失败
【发布时间】:2015-09-11 08:47:30
【问题描述】:

whats hapenning 是我的 ajax 请求随机失败,我不知道为什么。

我只在 chrome 中进行了测试,当错误回调被调用时,控制器成功返回,所以我认为问题不在服务器端。但我不确定。 chrome 中的 responseText 错误为空白,所以我没有提示进行故障排除。

这是我的 Ajax 调用,我做错了什么,我一无所知?

$.ajax({
    type: "GET",
    url: url,
    data: { postalCode: postalCode },
    dataType: "json",
    success: function (response) {
        if (isPostBack != 'True') {
            switch (response["Code"]) {
                case "-1":
                    alert('msg 1.');
                    break;
                case "0":
                    alert('msg 2.');
                    break;
                case "1":
                    alert('msg 3.');
                    break;
                case "2":
                    alert('msg 4.');
                    break;
                default:
                    alert('unexpected value.');
            }
        }
    }
});

如果不是,最可能的原因是什么? 我正在为 Sitefinity 开发 Asp.NET MVC,我只在这个 ajax 请求中检测到这个问题。

更新:

我在浏览器中检测到请求被取消。 它成功到达服务器并在代码执行期间被取消。它没有在特定行中取消,因为我评论了这些行以查找导致问题的行,但是无论代码行如何,它都被取消了。 然后我开始考虑超时并添加了超时。前 3 秒比 10 秒。但问题仍然存在。这是请求状态:

【问题讨论】:

  • 尝试在ajax中加个错误看看有没有输出
  • 另外,请尝试检查您的服务器日志,肯定会出现某种错误或至少访问日志以确保您在服务器端真正通过
  • 嗨德尔,错误回调不会改变结果,我仍然收到错误。 Zathrus 我没有在服务器日志中看到任何内容。但是我做了一个新的发现,Ajax 请求被取消了。我会更新线程
  • 向我们展示控制器中的代码。它是 Web API 控制器吗?您是否在 Sitefinity 中为其定义了自定义路由?

标签: jquery ajax sitefinity


【解决方案1】:

建议稍作修改:

$.getJSON(url, {"postalCode": postalCode})
 .success(function (response) {
    if (isPostBack != 'True') {
        switch (response.Code) {
        case "-1":
            alert('msg 1.');
            break;
        case "0":
            alert('msg 2.');
            break;
        case "1":
            alert('msg 3.');
            break;
        case "2":
            alert('msg 4.');
            break;
        default:
            alert('unexpected value.');
        }
    }
});

【讨论】:

  • 您好 ankhzet,感谢您向我介绍这种 ajax 请求方式。但是结果是一样的。我做了一个新的发现请求被取消,我会更新线程。
  • 显示你处理Get的源代码,它是否递归地重定向到相同的/Get位置,所以Chrome取消它?
  • 尝试chrome://net-internals/#events链接以获得完整的ajax调用跟踪
  • 它是一个非常好的工具!
【解决方案2】:

问题

我从提交按钮发出了 ajax 请求,它取消了一些请求。

我解决了

  • 隐藏提交按钮
  • 创建一个按钮 type=button 来执行 ajax 调用
  • 在成功回调时,我单击隐藏按钮提交表单值 $("#btnsubmit").click();

在此之后我仍然遇到问题,第一个请求总是被取消。 问题是超时。当我将超时值增加到 20 秒时,它不会被取消。但导致我遇到另一个问题。

为什么第一个 ajax 请求需要 20 秒?

那将是另一个冒险..

【讨论】:

  • on success callback i click the hidden button... 您可以通过submit$('form.some-form-selector').submit()document.forms[n].submit()... 发送表单。
猜你喜欢
  • 1970-01-01
  • 2017-04-02
  • 2018-11-30
  • 2013-01-15
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
相关资源
最近更新 更多