【问题标题】:Trouble with jQuery getJSONjQuery getJSON 的问题
【发布时间】:2010-08-25 13:48:49
【问题描述】:

我正在使用以下 URI 来传递给 jQuery 的 getJSON。

var publicVidsUrl = 'http://api.publicvideos.org/v/0/clips?callback=?';

$.getJSON(publicVidsUrl, function(data){
    alert(data.length); 
});

...但它失败了。虽然返回的 JSON 在 JSON lint 中有效,但我不太确定。转义的双引号看起来不错,但我想知道父数组中每个对象周围的双引号。

谁能帮助澄清这个错误来自哪里?具体来说,我在 Firebug 控制台中从 jQuery 收到此错误:

(d || "").split is not a function

我使用的是 jQuery 1.4.2

【问题讨论】:

  • 你已经安装了 Firebug,那么你有没有在你的回调中尝试过console.dir(data);
  • 该 URL 不返回 JSONP
  • “转义的双引号看起来不错” - 但实际上并非如此。
  • JSON 中属性周围的转义双引号根据 JSON lint 是有效的。 @meager 是的,我使用了控制台目录,当扩展返回的数组中的项目时,我看到“未定义”。

标签: jquery json getjson


【解决方案1】:

API 似乎不是用于 javascript 消费,更可能是用于服务器端处理; PHP、Python、C#等

由于跨域问题,您使用的任何 javascript 都会失败。除非您碰巧在 publicvideos.org 工作或有权在其域上发布脚本。

【讨论】:

  • 如果你运行代码你会看到getJSON函数确实返回了JSONP,我不认为这是一个跨域问题。
  • 不,它返回JSON,有区别en.wikipedia.org/wiki/JSON#JSONP
【解决方案2】:

你必须引用你的字符串,如果你在你的实际代码中省略它们,你会在其他任何事情发生之前得到一个语法错误:

var publicVidsUrl = "http://api.publicvideos.org/v/0/clips?callback=?";

【讨论】:

  • 字符串周围有引号,单引号。
  • 我发布答案时没有,由于某种原因我无法删除它;点击删除投票删除它而不是直接删除它。
【解决方案3】:

是的,毕竟我没有从公共视频 API 中获取 JSONP。希望能以某种方式解决这个问题。

【讨论】:

    【解决方案4】:

    这不是有效的 JSONP。有效的 JSONP 应该以 ?一切都应该用括号括起来。下面是一个格式正确的 JSONP 示例:

    ?({"posts":[{"id":"6", "url":"sample-6", "title":"sample 6", "content":"sample 6"},{"id":"5", "url":"sample-5", "title":"sample 5", "content":"sample 5"}]});
    

    【讨论】:

      【解决方案5】:

      不支持 JSONP,因此对该 API 的客户端请求将不起作用。

      一直往下看: http://wiki.publicvideos.org/api/main

      编辑:哈哈,刚刚注意到这是你自己在 wiki Jerome 上的帖子。为了后代的缘故,我将把它留在这里 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多