0
              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。但是当我尝试将它附加到自动完成框时。我得到 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 
4

1 回答 1

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);
        }

});

编辑:这可能是自动提交不喜欢您传递的数据的原因。

从自动提交文档:

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
    )
)

这不像任何一个选项

所以我假设自动提交已经决定,因为它不像其他任何东西我会假设它是一个函数,但当然它不是一个函数,它只是一个格式不正确的数组,所以它会抛出一个异常。

正如您似乎选择了[ { label: "Choice1", value: "value1" }, ... ]方法,无论是否有意,您都需要更改创建此数组的 PHP,以便它生成正确的数组自动提交使用的格式。因此,当它从 PHP 传回时,它看起来像这样:

{"p_name":"kasun","p_gender":"Male","p_age":"02-01-1988","p_nic":"880020110v"}
于 2013-07-31T10:43:27.503 回答