Jquery $.get 或 $.ajax 在 Internet Explorer 中不起作用

Posted

技术标签:

【中文标题】Jquery $.get 或 $.ajax 在 Internet Explorer 中不起作用【英文标题】:Jquery $.get or $.ajax not working in Internet Explorer 【发布时间】:2012-10-19 07:07:27 【问题描述】:

我一直在 IE 9 中运行此代码,但运气不佳。我查看了所有关于 UTF-8 修复等的帖子,但无济于事。有什么想法吗?

$.get(
    url: 'http://api.flickr.com/services/rest/?api_key=apikey&method=flickr.collections.getTree&user_id=66970820%40N03&collection_id=66947766-72157631850748939',
    success: function () 
        console.log('success!');
    
).done(function () 
    console.log('done');
).fail(function () 
    console.log('fail')
);

它在 Safari、FF 和 Chrome 中运行良好。将URL粘贴到IE中时,响应很好。

【问题讨论】:

它到底是怎么不工作的? 在不了解全部情况的情况下,我会说您可能会遇到跨域问题。尝试查看 $.getJSON。特别是关于 JSONP 的部分。 URL 是无法跨域检索的 xml 文档...您需要将 jsonp dataType 添加到 $.get 并在 url 中为 jsonp 设置参数,以便 API 返回 jsonp 而不是 xml IE8-9 不支持使用标准 ajax 方法的 CORS,这很可能是问题所在。 【参考方案1】:

@Iden Gozlan,你的回答听起来不错,但我虚弱的头脑很混乱。

@Erik 和@charlietfl 你对 JSONP 的建议让我走上了正确的道路。这绝对是一个跨域脚本问题。无法理解为什么 IE 是唯一不允许这样做的。我这样编辑了我的代码,一切都很好!

$.ajax(
  url: 'http://api.flickr.com/services/rest/?api_key=apikey&method=flickr.collections.getTree&user_id=66970820%40N03&collection_id=66947766-72157631850748939&jsoncallback=doSomeGreatStuff',
  dataType: "jsonp"
);

function doSomeGreatStuff(response) 
  // do some great stuff with the json response
  console.log( response.collections.collection[0].id );

帮助我的资源是 here 和 here 甚至是 here

【讨论】:

【参考方案2】:

这个jQuery XDomainRequest plugin 创造了奇迹。我在使用 IE8 和 9 时遇到了 ajax 问题,但在不更改任何代码的情况下简单地包含这个插件就为我提供了 IE8 和 9 CORS ajax 功能:)

【讨论】:

【参考方案3】:

它的已知问题,请阅读这篇文章: IE9 jQuery AJAX with CORS returns "Access is denied"

您应该使用 XMLHttpRequest 原始调用或下载以下插件,它将为您提供解决方案:

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

【讨论】:

以上是关于Jquery $.get 或 $.ajax 在 Internet Explorer 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Ajax异步提交造成变量undefined

jQuery – AJAX get() 和 post() 方法

jquery中我用$.get()开发ajax,怎么实现“正在处理。。"的效果

jquery ajax get 数组参数

jquery ajax 读取多个文件

jQuery AJAX 提交表单