【问题标题】:JQuery AJAX Call reports success in every browser but ChromeJQuery AJAX Call 在除 Chrome 之外的所有浏览器中都报告成功
【发布时间】:2012-09-09 15:24:33
【问题描述】:

我正在编写一些遗留代码,用于通过用户名/密码检查对 Web 应用程序的用户进行身份验证。该代码包含在标准 ASPX 页面中(是的,我知道),当请求该页面时,它要么返回状态 404 以指示身份验证失败,要么在 ASPX 页面上填充文字(如果一切正常)。

这是一个标准的 JQuery ajax 调用:

    $("#btnSWSignInPin").click(function () {
    $.ajax({
        url: "/Security/Validate.aspx",
        type: "GET",
        data: "Rnd=" + Math.random() + "&Identifier=" + $(".inpIdentifier").val() + "&Pin=" + $("#inpSWPin").val(),
        success: function () {
            $("#divSessionLogin").jqmHide();
            WarnInFuture();
            DoChecks = true;
        },
        error: function () {
            ShowLogin("The password you entered was incorrect. Please try again.");
        }
    });
    $("#inpSWPin").val("");

    return false;
});

这个调用的 .NET 代码运行良好,我可以成功地单步执行它而在 VS 中没有任何问题。我已经在 Safari、Firefox 和 IE9 中进行了广泛的测试,除了后者在 OSX 和 Windows 上都进行了测试,并且它按预期执行。然而在 Chrome(最新版本)中,成功函数从未执行,javascript 似乎认为从浏览器返回状态 200 以外的东西,尽管Fiddler 在响应标头中显示它肯定是 200。

谁能建议我可以检查什么以尝试理解和纠正这种行为?

【问题讨论】:

    标签: asp.net google-chrome jquery


    【解决方案1】:

    设置

    异步:假

    当 async 设置为 true 时,Google Chrome 似乎存在触发成功的问题。

    【讨论】:

      【解决方案2】:

      我认为这可能是一个 url 解析问题,请尝试以这种方式提供参数:

      data = {
          "key_1": "value_1",
          "key_2": false,
          "key_4": 123
      };
      

      【讨论】:

      • 感谢您的评论。它在除 Chrome 之外的所有设备中都能完美运行 - Chrome 是否需要以不同的方式做事?
      • 不,谷歌浏览器通常是更兼容的浏览器,因此令人惊讶。一点建议:在处理 URL 时尽量只使用小写名称
      • 这是我对 Chrome 的一般看法,这就是为什么这更加令人困惑。
      猜你喜欢
      • 2015-06-08
      • 2021-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-13
      • 2013-09-17
      相关资源
      最近更新 更多