Php 如何在引导typeahead中使用MySQLi从数据库中获取的数据?
我正在使用jqueryajax+MySQLi准备好的语句从数据库中获取数据。问题是,我不知道如何准确格式化数据,以便在Bootstrap的typeahead插件中使用 以下是相关代码: PHP:Php 如何在引导typeahead中使用MySQLi从数据库中获取的数据?,php,javascript,mysql,mysqli,twitter-bootstrap,Php,Javascript,Mysql,Mysqli,Twitter Bootstrap,我正在使用jqueryajax+MySQLi准备好的语句从数据库中获取数据。问题是,我不知道如何准确格式化数据,以便在Bootstrap的typeahead插件中使用 以下是相关代码: PHP: $stmt = $mysqli->prepare("SELECT GAME_NAME FROM GAMES WHERE GAME_NAME LIKE ?"); $query = "%".$query."%"; $stmt->bind_param('s',$qu
$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);
}
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 + "'");
}
});
我得到的AJAX响应是所有名称作为一堆文本:
'"game 1""game 2""blaablaa""some other game"....'
我想我必须有一个名称数组,我不知道如何将stmt
结果作为一个数组。我尝试并使用的示例是(我使用数组allCities
作为数据源):
另一个更新:
$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);
}
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 + "'");
}
});
在“网络”选项卡中,响应给出了我想要的结果,但格式如下:
抵抗:人类居住邪恶的堕落4吴宇森展示了帝国的扼杀2:国王居住邪恶的时代2
。所以没有任何格式Console.log(resp)
却什么也没给我。虽然当我搜索“resident evil 6”时,这意味着当我键入确切的名称时,console.log也可以工作。发布初始化ajax请求的代码
例如,这是jQueryAjax函数的简写
$.ajax({
url: url,
dataType: 'json',
data: data,
success: callback
});
若数据类型指定为json,那个么回调函数将接收一个类似于示例中allCities的数组,然后您可以将其传递给插件。例如,伪代码:
$.ajax({
url: 'http://blabla',
dataType: 'json',
data: dataArray,
success: function(response) {
$('#city').typeahead({source: response, items:response.count()});
}
});
基本上,您应该创建key=>value-store数组,然后最后使用json_-encode输出它。您在代码中犯的错误是,您试图对每个结果进行回显和json_编码,这应该在最后完成。我刚刚用数据类型“json”修改了代码,服务器说了(错误):“[object]”。当然,这条消息不是很有帮助。当服务器响应不是json格式时,可能会发生此错误。你能发布一些关于这个请求的信息吗?标题和原始格式的响应John,你能看到我的问题的最新更新吗。谢谢。看起来服务器返回的json不正确。我想您可以尝试调试服务器返回的内容。在您的情况下,脚本应该返回数组一次。您需要使用游戏的值创建数组。此字符串应使用一次,$result应为带有所需值的结果数组。echo json_编码($result);我猜服务器代码是错的。我不认为重复$result有什么意义,因为result在while循环中保持不变,没有变化。有点不对劲,可能是($row=$stmt->fetch()){$result[]=$row}echo json_encode($result)应该是这样的while($row=$stmt->fetch()){$result[]=$row}代码>