Php 如何在引导typeahead中使用MySQLi从数据库中获取的数据?

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

我正在使用jqueryajax+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);
          }
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}