テキスト入力で 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 );