【问题标题】:Ajax Request Jquery on IE9, doesn't workIE9上的Ajax请求Jquery,不起作用
【发布时间】:2015-07-17 12:27:52
【问题描述】:

我在一个服务器上有一个 rest api,在另一个服务器上有一个使用 rest web 服务的应用程序。

Rest api 服务器是一个 https,另一个是 http。

我需要调用 web 服务来获取 json 数据,但是在 IE9 中,当我每次发出 ajax 请求时都会给我一个错误。 (可能是 cors 问题)。

要执行请求,我需要根据请求设置标头,因为它们需要身份验证。

在 FF 中效果很好。

$.ajax({
    url: 'https://xxxxxxx/xxxx/xxxxx',
    cache: false,
    dataType: 'json',
    headers: {
        'param1': param1,
        'param2': param2,
        'param3': param3,
        'param4': param4
    },
    success: function(data) {
        alert("success");
    },
    error: function(xhr, status, errorThrown) {
        alert("Fails");
    }
});

我该如何解决这个问题?我真的需要在 IE 中运行这个应用程序。

【问题讨论】:

  • 控制台是否出现错误?
  • jQuery 版本是什么?
  • “它不起作用”信息不足。您是否检查过控制台是否有错误?端点是否被命中?
  • 如果是 CORS 问题,那么它也不会在 FF 中工作,因为 CORS 不是特定于浏览器的,而是它的 request具体
  • 会弹出"Fails" 警报吗?如果有,statuserrorThrown 的值是多少

标签: javascript jquery html ajax request


【解决方案1】:

IE9 不支持没有 shim 的 CORS,而 IE10 仅提供有限的支持。

https://github.com/jaubourg/ajaxHooks/blob/master/src/xdr.js

【讨论】:

  • 我已经读过这种可能性,但我需要在我的请求中使用自定义标头,因此我不确定是否可能。我猜不是。
  • 答案的第一部分是答案的基本部分。 IE9 不支持它,因此除了指向某人创建的补丁来执行浏览器版本本身不具备的功能之外,没有其他答案。我过去也遇到过同样的问题,一种方法(虽然不是一个好方法)是让你的 ajax 函数在你的代码中点击一个 web 方法,如果你使用的是从 HttpClient、WebClient 等进行调用的 .NET . 再一次,并不理想,但这是我过去解决这个问题的方式。
  • 您在控制台中遇到的错误很可能是预检请求的 OPTIONS 错误。使用您的 ajax 调用代码隐藏方法并在那里添加您的自定义标头。这适用于 11 以下的 IE 版本,因此如果它是不受支持的版本之一,只需进行检查并将其路由到代码隐藏方法。
猜你喜欢
  • 2016-01-29
  • 2012-11-28
  • 1970-01-01
  • 2011-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-20
相关资源
最近更新 更多