我在文本输入上有 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">
. - 用于 ajax 的后端 PHP 脚本用于
json_encode()
属性名称数组。 - 用来
error_log()
存储json_encode()
我得到的结果,[{"value":"Bill's Apartments"}]
- 使用
console.log(data)
节目Bill's Apartments
。 - 直接在浏览器中访问 PHP Ajax 脚本
?term=bi
并附加到路径返回[{"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 );