我有下面的代码突然停止工作。自动完成不会产生任何结果。
我制作了一个临时表单来手动发送数据,它返回json数据很好。然后我测试了ajax实际上通过在调用页面时将json保存到文本文件来发出请求,这是有效的。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Customer Management System</title>
<link type="text/css" href="http://localhost/stack_ci_2/public_html/includes/jquery/css/smoothness/jquery-ui-1.8.5.custom.css" rel="stylesheet" />
<script type="text/javascript" src="http://localhost/stack_ci_2/public_html/includes/jquery/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="http://localhost/stack_ci_2/public_html/includes/jquery/jquery-ui-1.8.5.custom.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// Get matches for customer search.
$("#customer_search_ref").autocomplete({
minLength: 2,
source: function(request, response) {
$.ajax({
url: "<?php echo site_url('customer/ajax_customer_search'); ?>",
data: { term: $("#customer_search_ref").val()},
dataType: "json",
type: "POST",
success: function(data){
response(data);
}
});
},
// Inputs customer data into forms.
select: function(event, ui){
$("#customer_name").focus();
$("#tabs").tabs("select",0);
}
});
});
手动发布和文本文件中返回的JSON数据。
[{"id":"114","name":"Claire","surname":"Taylor","address_1":"add1","address_2":"add2","address_3":"add3","city":"city","county":"county","postcode":"postcode","country":"country","email":"email","home_tel":"home","mobile_tel":"mobile","work_tel":"work","notes":"notes","value":"Claire Taylor - 114","label":"114 - Claire Taylor"}]
我认为可能是标签和价值没有被退回,但确实如此。
此外,js和css文件已成功加载,XHR请求所有这些文件已在firebug中测试过。
有什么想法吗?
答案 0 :(得分:1)
看看这个: Having problems with jQuery UI Autocomplete
您必须使用label
和value
作为json对象的主要属性名称
答案 1 :(得分:0)
我建议您使用firebug控制台查看响应内容。
答案 2 :(得分:0)
我猜你的返回JSON不符合所需的格式。我认为它应该是['value1','value2',.....]而不是[{key:value1,key2:value2}]。
请再次参考jquery UI自动完成源选项。
答案 3 :(得分:0)
您可以使用$ .map方法合并数据以创建正确的响应
success: function(data){
var result = $.map(data, function(item){
return {
label: item.name,
value: item.id
}
});
response(result);
}