【问题标题】:jQuery ajax request - IE11 Access is deniedjQuery ajax 请求 - IE11 访问被拒绝
【发布时间】:2015-01-10 16:55:32
【问题描述】:

问题

我正在使用以下函数通过 jQuery 发出 ajax 请求:

function ajaxRequest(requestName,responseFunction,parameters) {
 console.log('Making request ' + requestName);
 var now = new Date();
 $.ajax({
    type: "GET",
    url: "ajax.php",
    error: function(jqXHR,textStatus,errorThrown ) {
        console.log('Error: ' + textStatus + ' ' + errorThrown);
    },
    success:function(msg) {
        console.log('Success! ' + msg);
    }
 });
}

“访问被拒绝”错误的可能原因有哪些?我可以做些什么来获得更有意义的错误消息?

更多信息...

我目前正在调用此函数以在输入字段中保存一个值。这适用于所有经过测试的浏览器。

我还从 onpaste 事件(即 )调用此函数来完成相同的工作,这就是失败的原因,但仅在 IE11 中。错误只是“访问被拒绝。”。

注意,这不是跨域请求,是请求同目录下的文件。

测试于:

  • Mac + Safari
  • Mac + Chrome
  • WinXP + IE8
  • Win7 + IE9
  • Win 8 + IE10
  • 在 8.1 + IE11 中(唯一导致问题的版本。)

请注意,我已经删除了一些不相关的代码部分,例如使用 responseFunction 和 parameters 变量。

【问题讨论】:

  • 这是实际的相对网址吗?
  • 添加下面的代码试试看 - <meta http-equiv="X-UA-Compatible" content="IE=Edge" >
  • epascarello - 是的,这就是我测试过的。感谢 WisdmLabs 的建议,但这并没有什么不同。
  • 确保您没有从 CDN(例如 Google Hosted Libraries)加载您的 jQuery 资产。由于域不同,这违反了 Microsoft 用来防止 Internet Explorer 中的跨站点脚本的某些安全协议。另一个试用解决方案是更改您的 jQuery 版本。
  • 感谢 WisdmLabs - 再次所有好主意,但所有我都尝试过 :(

标签: jquery ajax internet-explorer-11


【解决方案1】:

经过大量研究,我能想出的唯一解决方案是使用 setTimeout 使 AJAX 请求在 1 毫秒后触发,而不是立即触发。我认为这是 IE11 中的一些错误,但希望此解决方案对某人有用。

最后,我改了这段代码:

ajaxRequest('save_function','response_function',params);

到这里:

setTimeout( (function(params) {
    return function() {
        ajaxRequest('save_function','update_save_marksheet_mark',params);
    };
})(params),1);

为了清楚起见,第一行代码在所有测试的浏览器中都有效,直到 IE7,除了 IE11。

【讨论】:

  • 您是如何提出这个解决方案的?你能指出任何其他信息吗?
  • 老实说,反复试验——因为错误只发生在一组特定的情况下(IE,onPaste 事件),我想如果我可以复制它,就好像它不在它应该与 onPaste 事件同时工作 - 确实如此:)
  • 它确实解决了我的问题!
  • 答案也与 Windows 10 相关。我在 Windows 10 和 IE 11 上遇到了同样的问题。您的“修复”是唯一有效的方法。
猜你喜欢
  • 2013-11-14
  • 1970-01-01
  • 2014-07-09
  • 1970-01-01
  • 1970-01-01
  • 2017-06-18
  • 1970-01-01
  • 1970-01-01
  • 2017-01-14
相关资源
最近更新 更多