jQuery自动完成 - data.split不是一个函数

时间:2010-11-11 23:23:23

标签: jquery json autocomplete

我在Web应用程序中使用jQuery插件自动完成,并将简单的json数据传递给自动完成。 当我以这种方式传递数据时,通过变量词。 Autocomlete工作正常。

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 个答案:

答案 0 :(得分:4)

假设您使用此自动填充功能:http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions

此自动完成要求远程数据不是数组,它需要一个字符串,每个条目都在一个单独的行中。

那你可以做什么: 返回预期的响应或为请求构建自己的解析函数(可以设置为选项) 这个函数必须返回一个带有对象的数组,其中对象有成员数据,值,结果(看看autocomplete.js中的原始解析方法,看看是什么)

此外:确保ajax.php输出的是一个有效的json-string(如果你还没有使用php的json_encode)。并将dataType设置为'json',就像您之前尝试过的那样。

答案 1 :(得分:1)

因为该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
          });
      }
    });
});