使用JQuery getJSON方法

时间:2010-04-08 23:13:08

标签: 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=?

我用来解析'data'以获取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]);
           }
         }
       );

谁能说出我做错了什么? link text

4 个答案:

答案 0 :(得分: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做什么,但希望这会让你开始。 You can see the above code working here

答案 1 :(得分: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]);
       }

答案 2 :(得分:3)

你有两个关键错误:

  1. 在YQL网址中指定回调的正确参数为callback而不是jsoncallback
  2. 结果可在data.query.results…而不是data.results…
  3. 中找到

    还值得注意的是,YQL结果返回了data.query.count值,因此您可以看到返回了多少结果。

答案 3 :(得分:2)

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