$ .getJson无法在IE中运行

好吧,出于某种原因,我的getJson无法正常工作。 我正在提取一些股票信息,它适用于IE以外的所有主流浏览器。

我在这里创建了一个JSfiddle: http : //jsfiddle.net/qZhSk/

如果有人能帮助我理解我做错了什么,那将会非常有帮助。

谢谢!

编辑

我自己找到了解决方案。 问题出在我的url查询中。 如果其他人有这个问题,这里是答案:

var url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20WHERE%20symbol%3D'NPO'&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys"; $.getJSON(url + "&format=json&callback=?", function(data) { var items = []; $.each(data.query.results.quote, function(key, val) { items.push('
  • ' + val + '
  • '); }); $('
      ', { 'class': 'my-new-list', html: items.join('') }).appendTo('body'); )};

    从技术上讲,我认为你违反了同源政策。 根据定义,你不能从你自己的域以外的域中获取JSON。从Yahoo获取数据肯定是与jsFiddle不同的服务器。 这里报告了类似的问题。 他们列出的CORS例外是IE到版本10,这将完美地解释这个问题。

    问题可以通过使用“?”来解决。 在你的回调处理程序中。 有关详细信息, 请参阅此堆栈文章 。

    由于它的旧post,这个答案可能对其他寻求者有帮助。

    可能有两个原因导致getJson无法在IE中工作。

    1.通过添加解决哪个Jsonp请求

      &callback=? or &callback=? 

    2.设置ajax catch。

     $.ajaxSetup({ cache: false }); 

    如果您仍有问题,可能是因为跨平台API使用。

    我将使用jquery和IE来解决众所周知的跨域策略问题 。

    本文很好地解释了解决方案:

    http://cypressnorth.com/programming/cross-domain-ajax-request-with-json-response-for-iefirefoxchrome-safari-jquery/