Использование метода JQuery getJSON - PullRequest
3 голосов
/ 09 апреля 2010

Я пытаюсь разместить данные JSON с помощью функции getQSON JQuery. Запрос 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 ]

6 голосов
/ 09 апреля 2010

Вашему коду потребовалось несколько настроек, вот обновленная версия:

$.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, но, надеюсь, это поможет вам начать. Вы можете увидеть приведенный выше код, работающий здесь .

3 голосов
/ 09 апреля 2010

У вас есть две ключевые ошибки:

  1. Правильный параметр для указания обратного вызова в URL YQL: callback вместо jsoncallback
  2. Результаты можно найти в data.query.results…, а не data.results…

Также стоит отметить, что с результатами YQL возвращено значение data.query.count, чтобы вы могли увидеть, сколько результатов было возвращено.

3 голосов
/ 09 апреля 2010

В этой строке:

      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 голосов
/ 09 апреля 2010

У меня есть вопрос: можете ли вы получить доступ к этому URL (http://query.yahooapis.com/...), даже если он не находится в вашем домене? Разве это не нарушает "ту же политику происхождения"?

...