Jquery自动完成没有返回任何东西!

时间:2011-02-08 23:41:13

标签: jquery ajax autocomplete

我有下面的代码突然停止工作。自动完成不会产生任何结果。

我制作了一个临时表单来手动发送数据,它返回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中测试过。

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

看看这个: Having problems with jQuery UI Autocomplete

您必须使用labelvalue作为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);
}