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
も機能します。