Использование плагина автозаполнения jQuery с Geonames

Я относительно новичок в jquery и пытаюсь понять, как заставить этот плагин автозаполнения работать с геоименами (возвращает информацию о местоположении). Аналогичный пример работы с автозаполнением jquery можно найти здесь http://jqueryui.com/demos/autocomplete/#remote-jsonp, но я не могу заставить его работать с автозаполнением. Ниже показано, что я пытаюсь сделать, но ничего не получаю за результаты и эту ошибку консоли браузера: Uncaught TypeError: Не удается прочитать свойство 'geonames.adminName1' из неопределенного.

$("#location2").autoSuggest("http://ws.geonames.org/searchJSON", {selectedItemProp: "geonames.adminName1", searchObjProps: "geonames.adminName1", selectedValuesProp : "geonames.name"});

JSON, возвращаемый из geonames, выглядит так:

{"totalResultsCount":29,"geonames":[{"countryName":"United States","adminCode1":"UT","fclName":"city, village,...","countryCode":"US","lng":-111.6946475,"fcodeName":"populated place","toponymName":"Orem","fcl":"P","name":"Orem","fcode":"PPL","geonameId":5779334,"lat":40.2968979,"adminName1":"Utah","population":88328},{"countryName":"United States","adminCode1":"UT","fclName":"country, state, region,...","countryCode":"US","lng":-111.69912,"fcodeName":"administrative division","toponymName":"City of Orem","fcl":"A","name":"City of Orem","fcode":"ADMD","geonameId":7174024,"lat":40.2987069,"adminName1":"Utah","population":88328}]}

Если я вручную скопирую JSON в переменную с именем data, а затем использую его для источника, как это работает:

$("#location2").autoSuggest("data.geonames", {selectedItemProp: "adminName1", searchObjProps: "adminName1", selectedValuesProp : "name"});

Я также хотел бы знать, можно ли объединить более 1 значения при выборе результата, например adminName1 + name?

Пожалуйста и спасибо!


person aeroshock    schedule 15.03.2012    source источник


Ответы (1)


удаленный ответ jsonp при автозаполнении работает с методом $.ajax(). Просмотрите документацию по $.ajax().

В случае успеха метод ajax может передать данные в $.map(), а затем вы можете делать с данными все, что хотите (распечатать или поместить в DOM).

person Brandon Runyon    schedule 05.07.2012