javascript - json 和 jsonp 的 $.ajax 和 $.getJSON 无法正确地从第 3 方服务器获得响应

标签 javascript jquery json jsonp

正如标题所说,我正在尝试从网站提供的 api 中检索 json。我现在尝试了各种各样的事情并得到了不同的结果。我希望能够检索和解析 json 以从中获取我想要的信息。这是我尝试过的:

1) $.ajax() 代码块(单击按钮时运行):

  $.ajax({
            type: 'GET',
            url: url,
            dataType: 'json',
            success: function(data) {
                alert('Success!');
            }
        });

这会产生“Access-Control-Allow-Origin 不允许 Origin null”。错误并且没有得到服务器的响应(对于 Chrome 或 FF,我不关心 IE,因为这是我使用的一个小项目)。 Looking around我认为问题可能是我需要它成为 jsonp 数据类型,因为我正在尝试连接到外部网站。这让我尝试#2

2) $.ajax 和 jsonp 数据类型

$.ajax({
        type: 'GET',
        url: url,
        dataType: 'jsonp',
        success: function(data) {
            alert('Success!');
        }
    });

我还附加了“&callback=?”到我给函数的“url”的末尾。这次使用 Chrom 的开发工具,我可以看到来自服务器的响应,但警报从未显示。我使用 JSONLINT 来确认响应是一个正确的 json(它是)并且我已经尝试将 json 设置为一个变量以便我可以使用它(沿着在脚本标记 [var response; 中早些时候初始化一个变量的行)。 ] 并尝试将 json 分配给它 [response = data;])。当我尝试警告(响应)时,这产生了未定义的结果;后来(我不相信 response=json; bit 曾经因为某种原因被调用过)。

我也尝试过使用 $.getJSON 但查看它的 api 它显然只是运行 $.ajax (幸运的是,我在尝试 json vs jsonp 时得到了与 $.getJSON 相同的响应/错误,就像我在尝试时所做的那样$.ajax)。当我尝试作为 jsonp Chrome(FF 不会产生此错误)显示“意外语法错误:意外 token :”。 This让我觉得我试图与之交谈的网站没有 jsonp 工作,我无法仅作为 json 请求访问第三方网站。该链接讨论了如何将服务器设置为以 application/json 而不是 text/html 的形式返回,就像我从我的回复中得到的那样,为他们解决了问题(但同样,我正在尝试访问第三方站点,因此我可以'访问服务器)。

我已经在 Chrome 和 FF 中尝试过这个,并查看了 Dev Tools/Firebug 并看到了相同的东西(尽管 FF 不会产生原始错误,但这显然是 Chrome 的一个错误)。

另外:我已经获取了返回的 json 响应并在其上运行 $.parseJSON 并且能够获取各种片段但是一旦 $.ajax/$.getJSON 工作我如何访问 json?

任何想法/解决方案将不胜感激。

最佳答案

我曾经遇到过 Unexpected Syntax Error: Unexpected token : 错误。

该站点似乎不支持跨域加载。 您尝试使用什么 API?

关于javascript - json 和 jsonp 的 $.ajax 和 $.getJSON 无法正确地从第 3 方服务器获得响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10252748/

相关文章:

c# - 使用 C# 的数据库结果的 JSON 数组格式

arrays - Powershell 嵌套 JSON 到 csv 转换

javascript - Object.create() 混淆 - 如何访问/销毁对象?

javascript - 我可以使用 jQuery 来独立定位 CSS 类的实例吗?

c# - 如何在gridview的rowcommand事件中在新标签中打开一个页面?

对表进行排序后不会触发 jQuery click() 事件

javascript - jQuery - 自定义图库 - 适用于 FF、Chrome、Safari 和 IE8,但不适用于 IE7 - 指针?

javascript - 扩展运算符如何在数组和 obj 中工作?

jquery - 使用 jquery.noConflict()

json - 使用jq递归提取对象值和父键名