【问题标题】:json cross origin not working with callback=?json 跨源不适用于回调 =?
【发布时间】:2012-08-29 08:11:47
【问题描述】:

我在 mangaeden.com 上获取 JSON 数据时遇到问题。让我解释一下:

如果我使用这个脚本

$.getJSON('http://www.mangaeden.com/api/list/1/', function(data) {

            $.each(data.manga, function(key, val) {
                something();
            });
        });

我收到“访问控制允许来源错误”。 所以我使用回调:

$.getJSON('http://www.mangaeden.com/api/list/1/?&callback=?', function(data) {

            $.each(data.manga, function(key, val) {
                something();
            });
        });

现在服务器向我发送 json 数据,但它被评估为脚本,所以我得到“Uncaught SyntaxError: Unexpected token:”错误

我该怎么办?

【问题讨论】:

  • 显然 API 已损坏或不支持 jsonp
  • 在您的后端尝试使用 m= 之类的前缀为结果添加前缀,就像您将其分配给变量一样。
  • 我想我不会破坏这个但我不是 mangaeden.com 的所有者,所以我不能编辑后端

标签: jquery json callback getjson


【解决方案1】:

我用 YQL 做了一个解决方案

YQL 查询click

工作示例http://jsfiddle.net/gJCk3/

【讨论】:

    【解决方案2】:

    您需要删除“回调”之前的“&”符号。

    【讨论】:

    • 你确定他们支持 json 回调吗?
    • 不,我不确定。我只想获取我不在乎的json数据。我吓坏了 :( 问题是我不知道为什么如果我输入回调参数,数据会被解释为脚本
    • 如果你使用的话,可以在 PHP 中使用吗?
    【解决方案3】:

    你应该改变这个 api http://www.mangaeden.com/api/list/1/?callback=jsonpcb.. 结果一定是这样的

    jsonpcb({
      "manga": [
        {
          "i": "4e70ea93c092255ef70074f3",
          "a": "dragonball-af",
          "im": null,
          "t": "DragonBall AF"
        },
    ..
    });
    

    【讨论】:

    • 如果我将某些内容作为回调参数(例如 callback=jsonpcb),我会收到“Access-Control-Allow-Origin”错误。 $.getJSON('mangaeden.com/api/list/1/?callback=jsonpcb', function(data) { something(); }); });函数 jsonpcb(数据){ 警报(数据); }
    • 你也修改你的api,插入jsonpCallback
    • 好的,但我需要以任何方式获取 JSON 数据。也许我可以简单地做一个 HTTP 请求?
    • 你可以在这里找到可能的解决方案 stackoverflow.com/questions/7077781/… 但你应该实现一个代理服务
    猜你喜欢
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    • 2012-05-28
    • 2018-04-07
    • 1970-01-01
    • 2015-01-16
    相关资源
    最近更新 更多