У меня есть настройка автозаполнения jQuery для ввода текста, а апострофы не преобразуются из '
, а именно, как они хранятся в базе данных.jquery autocomplete кодировка символов
Выпадающие дисплеи Autocomplete Bill's Apartments
вместо Bill's Apartments
.
С моей точки зрения браузер конвертирует '
в и апостроф, '
.
Являются ли данные двойными закодированными? Является ли jQuery кодировкой данных, которые он получает через $.ajax
? Это похоже на случай, когда апостроф уже закодирован. jQuery должен кодировать амперсанд?
- Я сохраняю свои файлы с помощью
UTF-8 Encoding
. - MySQL charset:
UTF-8 Unicode (utf8)
- Составление базы данных
utf8_general_ci
. - Использование метатега с HTML 5,
<meta charset="utf-8">
. - Backend PHP-скрипт для ajax использует
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
});
упрощенный Backend 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);
, поскольку я передаю кодированный каталог данных в мою функцию, и это динамично добавляется к странице, делает браузер не имеет шанс проанализировать кодировку в том, что она представляет? Наверное, это то, о чем я прошу. – hungerstar
Браузер попытается декодировать html, а не javascript. Однако некоторые функции jquery, например html(), также будут декодировать html, но автозаполнение не является одним из них. – DavidW
Хорошо. Если вы можете отредактировать свой ответ и добавить его, чтобы он объяснял, почему кодированный символ не расшифровывается браузером, я думаю, что это удовлетворит мой вопрос, и я приму ваш ответ. – hungerstar