我在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 }); });
答案 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
});
}
});
});