Автозаполнение jQuery работает с локальной строкой, но не тогда, когда та же самая строка вызывается с сервера - PullRequest
2 голосов
/ 10 мая 2010

Это связано с вопросом, который я задал на Как сделать AJAX-вызов немедленно при загрузке документа

Я пытаюсь получить строку, разделенную | символы с сервера для использования в качестве входных данных для плагина .Query .autocomplete (). Если у меня есть локальная переменная, объявленная в коде, то она работает нормально, но если я пытаюсь определить эту переменную, используя ajax-вызов к серверу, она не работает, даже если предупреждение показывает, что я заполнил переменную "dataArray" точно такие же символы.

Мой код (который не работает):

$(document).ready(function(){
    $.ajax({
        type: "GET",
        url: "../AutoComplete",
        success: function(data) {
            var dataArray = data;
            alert(dataArray);
            $("#example").autocomplete(dataArray);
        }
    });
});

Значение, которое печатается в предупреждении:

»Рукопись | Текст | Информационный объект | Баскетбол | Мяч | Спортивное оборудование | Тарантул | Паук | Австралийский паук | Игрок в крикет | Средневековый артефакт | Персона | Спортсмен | Леонардо Да Винчи | Страна | Язык | Изобретатель | Священник | Производитель электроники | Объект | Письмо | Артефакт | Модель управления | Организм | Животное ».split (« | »);

Если вместо этого я делаю это (хотя это не решение):

$(document).ready(function(){
        $.ajax({
            type: "GET",
            url: "../AutoComplete",
            success: function(data) {
                var dataArray = "Manuscript|Text|Information Object|Basketball|Ball|Sporting Equipment|Tarantula|Spider|Australian Spider|Cricket Player|Medieval Artefact|Person|Sportsperson|Leonardo Da Vinci|Country|Language|Inventor|Priest|Electronics Manufacturer|Object|letter|Artefact|governance model|Organism|Animal".split("|");                  
                alert(dataArray);
                $("#example").autocomplete(dataArray);
            }
        });
    });

Автозаполнение работает нормально?

Ответы [ 3 ]

2 голосов
/ 10 мая 2010

Не помещайте разделение в вывод скрипта ../AutoComplete. Также избавьтесь от цитат.

Другими словами, сделать ../AutoComplete return:

Manuscript|Text|Information Object|Basketball|Ball|Sporting Equipment|Tarantula|Spider|Australian Spider|Cricket Player|Medieval Artefact|Person|Sportsperson|Leonardo Da Vinci|Country|Language|Inventor|Priest|Electronics Manufacturer|Object|letter|Artefact|governance model|Organism|Animal

Затем выполните:

dataArray = data.split("|");
2 голосов
/ 10 мая 2010

Похоже, ваш сервер возвращает строку плюс фрагмент кода JavaScript. Предупреждение заканчивается «Животным» .split («|»); Вы должны выполнить эту строку как код JavaScript.

Попробуйте переписать ваш код так:

success: function(data) {
    var dataArray = eval(data);
    $("#example").autocomplete(dataArray);
}
1 голос
/ 10 мая 2010

../AutoComplete возвращается .split("|");?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...