var data_names;
jQuery.ajax({
type: "POST",
url: 'AutoCompleteHandler.php',
data: {d_name: "d_name"},
dataType: "html",
success: function(data) {
data_names=data;
console.log(data);
}
});
$("#p_name").autocomplete({
minLength: 2,
source:data_names,
focus: function(event, ui) {
$("#p_name").val(ui.item.label);
return false;
},
select: function(event, ui) {
return false;
}
})
.data("ui-autocomplete")._renderItem = function(ul, item) {
return $("<li>")
.append("<a>" + item.label + "/" + item.p_gender + "/" + item.p_age + "</a>")
.appendTo(ul);
};
我尝试上面的代码用数据填充我的自动完成框。但我得到以下错误。当我打印json我得到预期的json.but当我试图将它附加到自动完成box.i得到json数组数据与以下错误。
[{"0":"kasun","p_name":"kasun","1":"Male","p_gender":"Male","2":"02-01- 1988","p_age":"02-01-1988","3":"880020110v","p_nic":"880020110v"}]
Uncaught TypeError: Property 'source' of object [object Object] is not a function
答案 0 :(得分:0)
不完全确定,但我认为如果你加上这个可能有助于一个懒散。
在此代码中将data_names=data;
更改为data_names = jQuery.parseJSON(data);
,以将json字符串转换为自动完成可以正确处理的正确json对象。
var data_names;
jQuery.ajax(
{
type: "POST",
url: 'AutoCompleteHandler.php',
data: {d_name: "d_name"},
dataType: "html",
success: function(data) {
//data_names=data;
data_names = jQuery.parseJSON(data);
console.log(data);
}
});
编辑:这可能是为什么autocommit不喜欢你传递的数据。
来自自动提交文档:
Array: An array can be used for local data. There are two supported formats:
An array of strings: [ "Choice1", "Choice2" ]
An array of objects with label and value properties: [ { label: "Choice1", value: "value1" }, ... ]
重新水化数据时,它看起来像这样:
Array
(
[0] => stdClass Object
(
[0] => kasun
[p_name] => kasun
[1] => Male
[p_gender] => Male
[2] => 02-01- 1988
[p_age] => 02-01-1988
[3] => 880020110v
[p_nic] => 880020110v
)
)
这不像其他选项
所以我假设autocommit决定它不像其他任何我会假设它的函数,但当然它不是一个函数,它只是一个格式不正确的数组,所以它抛出异常。
你似乎已经选择了 [{label:“Choice1”,value:“value1”},...] 方法,无论是否有内涵,你需要更改创建的PHP这个数组所以它以正确的格式生成数组以供自动提交使用。 因此,当它从PHP传回时,它看起来像这样:
{"p_name":"kasun","p_gender":"Male","p_age":"02-01-1988","p_nic":"880020110v"}