我正在使用 jQuery ajax + MySQLi 的预处理语句从我的数据库中获取数据。问题是我不知道如何准确格式化要在 Bootstrap 的 typeahead 插件中使用的数据。
这是相关代码:
PHP:
$stmt = $mysqli->prepare("SELECT GAME_NAME FROM GAMES WHERE GAME_NAME LIKE ?");
$query = "%".$query."%";
$stmt->bind_param('s',$query);
$stmt->execute();
$stmt->store_result();
$count = $stmt->num_rows;
if($count > 0) {
$stmt->bind_result($result);
while($stmt->fetch()) {
echo json_encode($result);
}
作为 AJAX 响应,我得到的是所有名称作为一堆文本:
'"game 1""game 2""blaablaa""some other game"....'
我想我必须有一个名称数组,我不知道如何将stmt
结果作为一个数组。我尝试并工作的示例是(我使用数组allCities
作为数据源):
<script type="text/javascript">
$(document).ready(function() {
var allCities = ['Baltimore', 'Boston', 'New York', 'Tampa Bay', 'Toronto', 'Chicago', 'Cleveland', 'Detroit', 'Kansas City', 'Minnesota', 'Los Angeles', 'Oakland', 'Seattle', 'Texas'].sort();
$('#city').typeahead({source: allCities, items:5});
});
</script>
现在,如果我只能得到与示例中相同格式的结果,我认为我的问题应该得到解决。顺便说一句,我不确定json_encode()
我在代码中使用的。这只是我尝试过的。我很感激任何帮助。谢谢。
更新,阿贾克斯:
function handleSearch() {
var query = $.trim($('#search-field').val());
var itm = getSearchItem();
$.ajax({
type: "POST",
url: "..//functions/handleSearch.php",
dataType: "json",
data: "query="+query+"&itm="+itm,
success: function(resp) {
console.log("Server said (response):\n '" + resp + "'");
$('#search-field').typeahead({source: resp});
},
error: function(e) {
console.log("Server said (error):\n '" + e + "'");
}
});
另一个更新:
在网络选项卡中,响应给出了我想要的结果,但格式如下:Resistance: Fall of ManResident Evil 4John Woo Presents StrangleholdAge of Empires II: The Age of KingsResident Evil 2
. 所以没有任何格式。Console.log(resp)
虽然没有给我任何东西。虽然当我搜索“生化危机 6”时,这意味着当我输入 EXACT NAME 时,console.log
也可以。