[英]jquery autocomplete character encoding
我在文本輸入上設置了jQuery自動完成設置,並且單引號未從'
轉換而來'
它們是如何存儲在數據庫中的。
自動完成下拉菜單顯示Bill's Apartments
而不是Bill's Apartments
。
據我了解,瀏覽器會轉換'
並加撇號, '
。
數據是否被雙重編碼? jQuery是否對通過$.ajax
接收的數據進行編碼? 由於撇號已被編碼,因此似乎是這種情況。 jQuery是否必須對&符號進行編碼?
UTF-8 Encoding
保存文件。 UTF-8 Unicode (utf8)
utf8_general_ci
。 <meta charset="utf-8">
。 json_encode()
。 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()
或htmlspecialchars()
類的PHP函數不起作用,或者似乎是正確的解決方案。 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 );
聽起來您是將編碼數據直接傳遞給函數。 瀏覽器正在請求並發送json數據。 換句話說,瀏覽器不會將您的數據解析為html。
我建議嘗試這樣的事情$(#some_div> .html(從ajax調用返回數據);),然后將自動完成設置為源some_div注意:jQuery .html函數將對數據進行未編碼。
或使用類似htmlUnescape這樣的自定義轉換功能,此處為https://stackoverflow.com/a/7124052/2478282
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.