3

我正在尝试使用 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]);
           }
         }
       );

谁能说我做错了什么? 链接文本

4

4 回答 4

6

您的代码需要一些调整,这是一个更新的版本:

$.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但希望这个会让你开始。 你可以看到上面的代码在这里工作

于 2010-04-08T23:27:07.293 回答
3

在这一行:

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

您检查是否results[0]存在,然后您不使用它。我怀疑您的问题可以通过更改为以下内容来解决:

      if(data.results[0]){
        var data = filterData(data.results[0].place[0]);
       }
于 2010-04-08T23:19:12.153 回答
3
于 2010-04-08T23:35:00.293 回答
2

我有一个问题:即使它不在您的域中,您能否访问该 URL ( http://query.yahooapis.com/.. .)?这不违反“同源政策”吗?

于 2010-04-08T23:34:55.193 回答