$ .getJson无法在IE中运行

时间:2011-12-09 16:56:52

标签: javascript ajax jquery

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

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

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

谢谢!

修改

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

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('<li id="' + key + '">' + val + '</li>');
        });

        $('<ul/>', {
            'class': 'my-new-list',
            html: items.join('')
        }).appendTo('body');
)};

3 个答案:

答案 0 :(得分:8)

从技术上讲,我认为你违反了同源政策。根据定义,你不能从你自己的域以外的域中获取JSON。从Yahoo获取数据肯定是与jsFiddle不同的服务器。有一个similar issue reported here.他们列出的CORS例外是IE到版本10,它可以很好地解释这个问题。

使用“?”可以解决问题在你的回调处理程序中。 See this stack article了解更多信息。

答案 1 :(得分:1)

由于它的旧帖子,这个答案可能对其他求职者有所帮助。

为什么getJson无法在IE中工作,可能有两个原因。

1. Jsonp请求通过添加

解决了哪些问题
 &callback=? or &callback=?

2.设置ajax catch。

$.ajaxSetup({ cache: false });

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

答案 2 :(得分:0)