javascript - jsonp 请求在 firefox 中不起作用

标签 javascript jquery json

我正在尝试使用 jquery 进行直接的远程 json 调用。我正在尝试使用 reddit api。 http://api.reddit.com .这将返回一个有效的 json 对象。

如果我调用本地文件(这是从网站返回的保存到我的本地磁盘的文件),一切正常。

$(document).ready(function() {
    $.getJSON("js/reddit.json", function (json) {
        $.each(json.data.children, function () {
            title = this.data.title;
            url = this.data.url;
            $("#redditbox").append("<div><a href=\"" + url + "\">" + title + "</a><div>");
        });
    });
});

如果我然后尝试将其转换为远程调用:

$(document).ready(function() {
    $.getJSON("http://api.reddit.com", function (json) {
        $.each(json.data.children, function () {
            title = this.data.title;
            url = this.data.url;
            $("#redditbox").append("<div><a href=\"" + url + "\">" + title + "</a><div>");
        });
    });
});

它在 Safari 中可以正常工作,但在 Firefox 中不行。这是预料之中的,因为 Firefox 出于安全或其他原因不会进行远程调用。很好。

在 jquery 文档中,他们说要这样做 (jsonp):

$(document).ready(function() {
    $.getJSON("http://api.reddit.com?jsoncallback=?", function (json) {
        $.each(json.data.children, function () {
            title = this.data.title;
            url = this.data.url;
            $("#redditbox").append("<div><a href=\"" + url + "\">" + title + "</a><div>");
        });
    });
});

但是它现在停止在 safari 和 firefox 上工作。已发出请求,但从服务器返回的内容似乎被忽略了。

这是我正在编写的代码的问题还是服务器返回的内容的问题?如何诊断此问题?

编辑将地址更改为真实地址。

最佳答案

JSONP是服务器端需要支持的东西。我找不到文档,但看起来,如果 Reddit 支持 JSONP,则它不包含 jsoncallback 查询变量。

JSONP 的作用是用 JavaScript 函数调用包装 JSON 文本,这允许您在代码中定义的任何函数处理 JSON 文本。但是,此功能确实需要在全局范围内可用。看起来 JQuery getJSON 方法为您生成了一个函数名,并将其分配给 jsoncallback 查询字符串变量。

关于javascript - jsonp 请求在 firefox 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/377794/

相关文章:

javascript - 如何使用 block 级元素作为背景

Javascript 仅适用于 UL 中的某些 LI

javascript - 使用 JQuery 单击按钮选择多个列表项值

Java Jackson从多个模块中选择注册模块将JSON序列化为字符串?

javascript - kue - 处理不同文件中的作业

javascript - Chart.js 饼图,仅在圆弧外侧有边框

javascript - 添加 jqGrid 后按钮停止工作

javascript - 加了Tampermonkey的onclick是不是调用了函数?

json - 如何在JQ中展平多维数组

java发送json到php并插入mysql,但返回null