我有一个文本输入jQuery自动完成设置和撇号不是从'
这是它们如何存储在数据库中转换。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"}]
。 - 使用PHP函数,如
html_entity_decode()
或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);
这个htmlUnescape因为我经过编码的数据目录到我的功能,它被动态地添加到页面,并在浏览器没有机会将编码解析成它代表的内容?我想这就是我要问的。 – hungerstar
浏览器将尝试解码html,而不是javascript。然而,一些jquery函数,例如html(),也会解码html,但自动完成不是其中之一。 – DavidW
好的。如果你可以编辑你的答案,并添加到它,以便解释为什么编码的字符不被浏览器解码,那么我认为这将满足我的问题,我会接受你的答案。 – hungerstar