jQuery autocomplete - data.split не является функцией - PullRequest
1 голос
/ 12 ноября 2010

Я использую автозаполнение плагина jQuery в веб-приложении и передаю простые данные json в автозаполнение. Когда я передаю данные таким образом, переменными словами. Автокомпетент работает отлично.

var words = ["benzina","best","benátská noc","bez realitky","beroun","bershka","bernard","beskydy","belgie","berlin"];
$(document).ready(function() {
  $("#suggest").autocomplete(words, {
    formatItem: function(data, i, n) {
      return data[0];
    },  
      width: 342
  });
});

Но когда я загружаю его с сервера, я получаю сообщение об ошибке «data.split не является функцией». Я также установил заголовок Content-type: application / json в моем скрипте на стороне сервера. Я также пытаюсь установить опцию в autocommplete dataType: 'json', но все та же проблема. Когда я анализирую данные в опции автозаполнения parse: function (data) {..}, это выглядит, что данные в порядке, но я не могу прочитать их в formatItem. У тебя есть идеи?

$(document).ready(function() {
  $("#suggest").autocomplete("ajax.php?gsug="+whisp_id, {
    formatItem: function(data, i, n) {
      return data[0];
    },  
      width: 342
  });
});

Ответы [ 2 ]

4 голосов
/ 12 ноября 2010

Предполагается, что вы используете это автозаполнение: http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions

Это автозаполнение ожидает, что удаленные данные не массив, а строка, каждая запись в отдельной строке.

Так что вы можетеdo: Вернуть ожидаемый ответ или создать собственную функцию синтаксического анализа для запроса (может быть настроен как опция).
Эта функция должна возвращать массив с объектами, где объекты имеют члены data, value, result (взгляните на оригинальный метод parse в autocomplete.js, чтобы увидеть, что к чему)

Более того: убедитесь, что вывод ajax.php является допустимой строкой json (используйте php's json_encode, если вы этого еще не сделали).И установите для dataType значение «json», как вы уже пробовали ранее.

1 голос
/ 12 ноября 2010

, поскольку этот URL-адрес является просто строкой, а не данными JSON, сначала вам нужно получить данные.

попробуйте этот способ

$(document).ready(function() {
    $.ajax({
      url: "ajax.php?gsug="+whisp_id,
      cache: false,
      success: function(jsondata){
          $("#suggest").autocomplete(jsondata, {
            formatItem: function(data, i, n) {
              return data[0];
            },  
              width: 342
          });
      }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...