Вы должны использовать надлежащие инструменты jQuery для обработки XML, что значительно упрощает: -)
var data = $(xmlResponse).find("keyword").map(function() {
return { value: $(this).text() };
}).get(); // by the way, what is this 'get' for?
Также, глядя на ваш код, это выглядит довольно многословно для "простого" автозаполнения. Вы можете взглянуть на это: http://docs.jquery.com/Plugins/autocomplete
Обновление:
Я думаю, проблема в том, что вы .map()
корневой элемент вашего xml. Есть только один из них, что означает, что вы получаете только один результат от функции .map()
. В примере на сайте jQuery xml структурирован немного по-другому. Так что я бы попробовал это (это в основном то же, что и выше):
var data = $( "keyword", xmlResponse ).map(function() { // changed keywords to keyword
return {
value: $( this ).text() // changed $("keyword", this) to $(this)
};
}).get();
Я не проверял это, но я думаю, это должно сработать.