我有AJAX源的jQuery UI自动完成输入,我想显示标签而不是id; 但我的代码显示搜索结果何时返回.我怎样才能展示标签?
PHP:
$row['bbookname'] . ' ' . $row['bbookschool'], 'value' => $row['adid'] ); } echo json_encode($return); ?>
jQuery的/ AJAX:
$("#BooksSearchInput").autocomplete({ source: '../Search/BP_Books_Search.php', minLength: 1, autoFocus: false, select: function(event, ui) { var SearchBookVal = (ui.item.value) $.ajax({ type: "POST", data: { data: SearchBookVal }, url: "../php/SearchBooks_results.php" }).done(function(feedback) { $('#booksads').html(feedback) }); } });
请注意,我确实需要adid
在JavaScript回调中提供,因为我使用它来引用结果.
你的代码中有一些错误.
首先,PHP脚本中的以下行:
$return = array(...)
表示返回变量将在每次迭代时被覆盖,结果将始终是包含一个项目的数组(或者null
如果找不到匹配的行,则为PHP警告和字符串).修理:
$return = array(); while ($row = mysql_fetch_array($query)) { $return[] = array( "label" => $row["bbookname"] . " " . $row["bbookschool"], "value" => $row["adid"], // you can add additional keys without causing problems "feedback" => $row["feedback"] ); } echo json_encode($return);
其次,要显示在文本框中可以使用代码标签onFocus
,并onSelect
从这样的回答:
// ... focus: function (event, ui) { event.preventDefault(); $(this).val(ui.item.label); }, select: function (event, ui) { event.preventDefault(); $(this).val(ui.item.label); $("#booksads").html(ui.item.feedback); } // ...