jQuery UI自动完成JSON响应问题

时间:2011-09-20 22:09:15

标签: jquery jquery-ui autocomplete

我做了大量的研究,但仍然没有得到如何使用jQuery ui autocomplete。自动完成不起作用,我不知道为什么。任何帮助将不胜感激!

我在前端有以下内容。 1. jQuery正确链接。 2. jQuery-ui正确链接。 3. jQuery-ui css正确链接。

<script>
$("#tags").autocomplete({
source: function(request, response){
$.post("/panel/tags.php", {data:request.term}, function(data){     
    response($.maps(data, function(item) {
    return {
        label: item.tagName,
        value: item.tagID
    }
    }))
}, "json");
},
minLength: 2,
dataType: "json",
cache: false,
focus: function(event, ui) {
return false;
},
select: function(event, ui) {
this.value = ui.item.label;
/* Do something with user_id */
return false;
}

});
</script>


<div class="ui-widget">
    <label for="tags">Tags: </label>
    <input id="tags" size="50" />
</div>

在后端:

$query_tags = "SELECT tagID, tagName FROM DCB_Tags WHERE tagName LIKE '".$_GET['tags']."%' ORDER BY tagName ASC LIMIT 10";
$result_tags = mysql_query($query_tags)  or die ("Error: " . mysql_error());

$response = array();
$tags = array();
while($row=mysql_fetch_array($result_tags)) 
{ 
$tagID=$row['tagID']; 
$tagName=$row['tagName']; 
$tags[] = array('tagID'=> $tagID, 'tagName'=> $tagName);

} 

header("content-type: text/javascript");
echo json_encode($tags);
exit();

输出为:

  

[{ “TAGID”: “1”, “变量名”: “艺术”},{ “TAGID”: “4”, “变量名”:“艺术   显示 “},{” TAGID “:” 3" , “变量名”: “艺术家”},{ “TAGID”: “2”, “变量名”: “设计”}]

如果您通过放置?tag = art来访问该页面,它会正确地删除“design”。

2 个答案:

答案 0 :(得分:3)

看起来你正在做post然后试图在php页面上选择$_GET['tags']。因此,尝试使用ajax函数并在您的php页面上选择$_GET['term']。此外,$.maps不是一个功能。我认为你的意思是$.map

并且,如果您希望label作为输入的值,则不要指定value字段。如果您只指定一个,则自动填充将使用label

jQuery自动完成:

$("#tags").autocomplete({
    source: function( request, response ) {
        $.ajax({
            url: "/panel/tags.php",
            dataType: "json",
            data: {term: request.term},
            success: function(data) {
                    response($.map(data, function(item) {
                        return {
                            label: item.tagName
                       };
                }));
            }
        });
    },
    minLength: 2,
    select: function(event, ui) {
      /* Do something with user_id  */
    }
});

PHP:

$query_tags = "SELECT tagID, tagName FROM DCB_Tags WHERE tagName LIKE '".mysql_real_escape_string($_GET['term'])."%' ORDER BY tagName ASC LIMIT 10";

指向教程的链接:http://www.jensbits.com/2011/08/24/using-jquery-autocomplete-when-remote-source-json-does-not-contain-label-or-value-fields/

答案 1 :(得分:0)

我把&#34;警告(data.length);&#34;在成功函数开始时,检查从服务器接收的数据是否正确。它使得jquery控件在接收数据时无法显示任何内容。