在jQueryUI自动完成回调中访问JSON响应数据

时间:2014-01-11 20:47:06

标签: php jquery json jquery-ui

我正在使用jQueryUI自动完成来搜索MySQL数据库。当用户在搜索字段中按Enter键时,我想填充一个div,其中包含从DB返回的结果。

代码可以运行并返回自动完成的建议列表。

但是,我无法理解如何使用select:函数中返回的JSON数据,例如访问JSON对象中返回的titleauthor字段。请参阅jQuery代码示例中指示的alert()行。

ui.item提醒[object Object]

ui.item.title警告未定义。

我还能尝试什么? 另外,item是否使用正确的标签?如果是这样,为什么?它来自何处(我使用item,因为它在我审查的几个例子中一直使用。)

我的jQuery:

$('#srxbks').autocomplete({
    source: "autocomplete_test.php",
    minLength: 1,
    select: function( event, ui ) {
        alert('You chose: ' + ui.item);   <=== THIS LINE <===
        var out = 'Title: ' + ui.item.title + '<br>';
        out += 'Author: ' + ui.item.author + '<br>';
        $('.booksTableDIV').val(out);
    }
});

我的PHP:

<?php
include 'connect.php';

$term = strip_tags($_GET['term']);//retrieve search term sent by autocomplete

$qstring = "SELECT * FROM `books` WHERE `title` LIKE '%" .$term. "%'";
$query = mysql_query($qstring) or die(mysql_error());

while ($row = mysql_fetch_array($query)) {
    $row['title']=htmlentities(stripslashes($row['title']));
    $row['bid']=(int)$row['bid'];
    $row_set[] = $row['title'];
}
echo json_encode($row_set);

1 个答案:

答案 0 :(得分:1)

如果不知道JSON响应是什么,很难给出确切的答案。

警告不是您注意到的查看javascript对象的好方法。尝试使用console.log在浏览器的开发者控制台中检查对象。这有助于您找到正确的语法。

访问开发者控制台......

  • ...在Chrome中,在菜单中,转到查看&gt;开发人员工具
  • ...在Firefox中,在菜单中,转到工具&gt; Web开发人员&gt; Web控制台
  • ...在IE中,...不确定......我现在正在使用Mac。它应该是类似上面的东西。我认为它也可以通过F12
  • 访问

在每个中,应该有一个控制台选项卡,用于查看使用console.log记录的日志消息。

我怀疑你只需要做ui.item[0]ui.item.title之类的事情......但是再一次,我不能确定没有JSON数据。