2010-07-22 2 views
3

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

$.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, имя, страна, admin1 и т.д.)

По существу я хотел бы ...

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

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

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

Спасибо!

ответ

3

Если 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); 
     }); 
    }); 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^