无法在自动完成文本字段中填充数据

时间:2013-07-31 10:20:53

标签: jquery autocomplete

              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 

1 个答案:

答案 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"}