jQueryUI自动完成JSON不返回预期的数据

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

代码有效,并返回自动完成的建议列表。

但是,select:函数中返回的JSON数据不是我所期望的。

在下面的PHP代码示例中,查询请求数据库中与查询匹配的每个标题相关的所有字段。 应该有其他字段,例如author,bid,isbn,genre等 – 但是,只返回了title字段。

谷歌Chrome的控制台如下所示:

 Object {item: Object} item: Object label: "Much Obliged Jeeves" value: "Much Obliged Jeeves" __proto__: Object Object {label: "Much Obliged Jeeves", value: "Much Obliged Jeeves"} 

其他领域在哪里?

我的jQuery:

 $('#srxbks').autocomplete({ source: "autocomplete_test.php", minLength: 1, select: function( event, ui ) { console.log(ui); console.log(ui.item); console.log(ui.item.label); //Not working: var out = 'Title: ' + ui.item.title + '
'; out += 'Author: ' + ui.item.author + '
'; $('.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); 

您只需要确保所有变量都包含在返回的数组中。 您的PHP是有问题的部分,您没有正确地将变量传输到JSON。 你的jQuery很好。 以下是您希望发送回jQuery的每个额外变量需要执行的操作。

 // Initialize your variables here $returns = array(); $i = 0; while ($row = mysql_fetch_array($query)) { // Format your variables here $row['title']=htmlentities(stripslashes($row['title'])); $row['bid']=(int)$row['bid']; // Enter results into JSON array here $returns[$i]['title'] = $row['title']; $returns[$i]['bid'] = $row['bid']; $i++; } echo json_encode($returns);