0

jQuery ajax + MySQLiのプリペアドステートメントを使用して、データベースからデータを取得しています。問題は、Bootstrapの先行入力プラグインで使用するデータを正確にフォーマットする方法がわからないことです。

これは関連するコードです:

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()コードで使用したものについてはよくわかりません。それは私が試してみたものです。助けていただければ幸いです。ありがとう。

更新、Ajax:

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」を検索すると、「正確な名前」を入力してconsole.logも機能します。

4

2 に答える 2

0

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()});
  }
});
于 2012-05-27T18:14:18.947 に答える
0

基本的に、key => value store arrayを作成し、最後にjson_encodeで出力する必要があります。コードで間違っているのは、すべての結果に対してエコーとjson_encodeを実行しようとしていることです。これは、最後に実行する必要があります。

于 2012-05-27T19:54:43.627 に答える