【问题标题】:$.getJson not working in IE$.getJson 在 IE 中不起作用
【发布时间】:2013-10-25 07:46:28
【问题描述】:

好的,由于某种原因,我的 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('<li id="' + key + '">' + val + '</li>');
        });

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

【问题讨论】:

    标签: javascript ajax jquery


    【解决方案1】:

    从技术上讲,我认为您在此违反了同源政策。根据定义,您不能从除您自己的域之外的域中获取 JSON……而且从 Yahoo 获取数据肯定是与 jsFiddle 不同的服务器。有一个similar issue reported here. 他们列出的 CORS 异常是 IE 到 10 版,这可以完美地解释这个问题。

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

    【讨论】:

    • 这正是我注意到的。基本上你需要在你的 url 字符串的末尾添加一个 &amp;callback=? 并且你是金色的
    • 奇怪的是它可以在 Firefox 中运行。 编辑啊 - CORS
    【解决方案2】:

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

    getJson 不能在 IE 中工作的原因可能有两个。

    1.通过添加解决的Jsonp请求

     &callback=? or &callback=?
    

    2.设置ajax catch。

    $.ajaxSetup({ cache: false });
    

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

    【讨论】:

    • 谢谢。就我而言,缓存是问题所在。
    【解决方案3】:
    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 2012-05-06
    相关资源
    最近更新 更多