Итерация по YQL JSON приводит к получению geo.places через javascript - PullRequest
3 голосов
/ 22 июля 2010

Я пытаюсь перебрать некоторые результаты JSON из таблицы YQL geo.places с помощью плагина YQL jQuery (http://plugins.jquery.com/project/jquery-yql) устранение неполадок со следующим кодом;

$.yql("select * from geo.places where text=#{placename}", { 
        placename: '90210' 
    }, 
    function(data) {
        var Results = data.query.results;
        $.each(Results.place, function(name, value) {
            alert(name + ":" + value);
        });
    });
});

За исключением случаев, когда в результатах присутствует более одного "места", предупреждение будет отображать "0: [объект] [объект]", "1: [объект] [объект]" и т. Д. (Для каждого места ). Всякий раз, когда есть только один результат, оповещение будет отображать все имена и значения только одного места (woeid, name, country, admin1 и т. Д.)

По сути, я бы хотел ...

  1. введите почтовый индекс в YQL

  2. проверка города / штата / страны по результатам на основе предоставленных пользователем данных

  3. обновить поля широты и долготы из результатов

Спасибо!

1 Ответ

3 голосов
/ 23 июля 2010

Если Yahoo возвращает один place, он делает это как свойство results, а не как массив мест.Если это не массив, вы не можете выполнить итерацию.Итак, проверьте, является ли это массивом;если это не так, сделайте это одним:

$.yql("select * from geo.places where text=#{placename}", { 
        placename: '90210' 
    }, 
    function(data) {
        var Places = data.query.results.place;
        if (!Places.length) Places = [Places];
        $.each(Places, function(index, place) {
            alert(index + ":" + place.name);
        });
    });
});
...