テキスト入力で jQuery オートコンプリートを設定しましたが、アポストロフィが'
データベースに保存される方法から変換されていません。
Bill's Apartments
の代わりにオートコンプリート ドロップダウンが表示されますBill's Apartments
。
私の理解では、ブラウザは'
アポストロフィに変換され、'
.
データが二重にエンコードされていませんか? 経由で受信しているデータをjQueryでエンコードしてい$.ajax
ますか? アポストロフィはすでにエンコードされているため、これはそのようです。jQueryはアンパサンドをエンコードする必要がありますか?
- でファイルを保存しています
UTF-8 Encoding
。 - MySQL 文字セット:
UTF-8 Unicode (utf8)
- データベース照合
utf8_general_ci
。 - HTML 5 でのメタ タグの使用、
<meta charset="utf-8">
. json_encode()
プロパティ名の配列で使用する ajax 用のバックエンド PHP スクリプト。- I get
error_log()
の結果を保存するために使用し、json_encode()
[{"value":"Bill's Apartments"}]
console.log(data)
ショーの使用Bill's Apartments
。?term=bi
パスに追加してブラウザで PHP Ajax スクリプトに直接アクセスすると、[{"value":"Bill's Apartments"}]
.html_entity_decode()
またはのようなPHP関数を使用しても機能htmlspecialchars()
しないか、適切な解決策のようです。
HTML
<input type="text" id="property-name" name="property-name" value="">
jQuery
$('#property-name').autocomplete({
source: function(request, response) {
$.ajax({
url : ABSPATH + 'includes/ajax/property-name-search.php',
dataType : "json",
data : request,
success : function(data) {
response(data);
}
});
},
max: 25,
minLength: 2
});
簡素化されたバックエンド PHP
$query = "SELECT `property_name`
FROM `property_name_table`
WHERE `property_name` LIKE '%name%'";
$result = $mysqli->query( $query );
while ( $row = $result->fetch_object() ) :
$property_names[] = array( 'value' => $row->property_name );
endwhile;
echo json_encode( $property_names );