使用JQuery-getJSON方法

使用JQuery-getJSON方法,jquery,json,getjson,Jquery,Json,Getjson,我试图使用JQuery getJSON函数传递JSON数据。 REST查询是: http://query.yahooapis.com/v1/public/yql?q=select%20woeid%20from%20geo.places%20where%20text%20%3D%20%22london%22&format=json&jsoncallback=? 我用来解析“数据”以获取WOEID值的脚本在下面似乎不起作用: $.getJSON("http://query.yah

我试图使用JQuery getJSON函数传递JSON数据。 REST查询是:

http://query.yahooapis.com/v1/public/yql?q=select%20woeid%20from%20geo.places%20where%20text%20%3D%20%22london%22&format=json&jsoncallback=?
我用来解析“数据”以获取WOEID值的脚本在下面似乎不起作用:

 $.getJSON("http://query.yahooapis.com/v1/public/yql?"+
                "q=select%20woeid%20from%20geo.places%20where%20text%20%3D%20%22"+
                "london"+
                "%22&format=json&jsoncallback=?",
        function(data){
  console.log("json: " + data);
  var datatmp = data;
          if(data.results[0]){
            var data = filterData(data.results.place[0]);
           }
         }
       );
谁能说我做错了什么?

在这一行中:

      if(data.results[0]){
        var data = filterData(data.results.place[0]);
       }
检查
结果[0]
是否存在,但不使用它。我怀疑您的问题将通过更改为以下方式得到解决:

      if(data.results[0]){
        var data = filterData(data.results[0].place[0]);
       }

您的代码需要进行一些调整,以下是更新版本:

$.getJSON("http://query.yahooapis.com/v1/public/yql?"+
      "q=select%20woeid%20from%20geo.places%20where%20text%20%3D%20%22"+
      "london"+
      "%22&format=json&jsoncallback=json",
      function(data){
          if(data.query.results){
              $.each(data.query.results.place, function(i, v) {
                  console.log("woeid #" + i + ": " + v["woeid"]);
              });
          }
      });​

results
对象位于
query
下面,因此您需要首先进入该对象,上面的代码会遍历返回的第一个位置的woeid并向它们发出警告…这只是一个开始,不确定您最终想要对
woeid
做什么,但希望这能让您开始

我有一个问题:你能访问那个URL(.)吗,即使它不在你的域中?这是否违反了“同一原产地政策”?

您有两个关键错误:

  • 在YQL URL中指定回调的正确参数是
    callback
    ,而不是
    jsoncallback
  • 结果可在
    data.query.results…
    中找到,而不是
    data.results…

  • 另外,值得注意的是,YQL结果返回了一个
    data.query.count
    值,这样您就可以看到返回了多少结果。

    那么我该如何与这个答案竞争呢?非常感谢。我感谢你的帮助。嗨,尼克,谢谢你的代码,它工作得很好,除了一些只返回一个woeid的情况。。??非常感谢,@nav-奇怪的是,他们在这种情况下改变了自己的结构,不管怎样,检查单个案例,如下:感谢Nick的单个案例:)奇怪的是,json响应在只返回一个结果时如何改变其结构!jQuery使用带有回调函数的JSONP,因此同源策略不是问题。
    jsoncallback
    告诉jQuery您正在处理的是
    JSONP
    ,这部分是正确的。有关详细信息,请参阅文档:
    jsoncallback
    特定于该页示例中使用的Flickr。YQL使用
    callback
    。更正我之前的评论,jQuery正在查找
    callback=
    。在任何情况下,json前缀(或任何前缀)都是可选的。您可以在这里看到相关的jQuery源代码:正如您在我的回答(单击示例链接)中所看到的,他的
    jsoncallback
    可以工作,因为任何
    callback=
    都在两端匹配:)