Я пытаюсь сделать живой поиск с JQuery, PHP и MySQL.Я не эксперт, но знаю и понимаю достаточно, чтобы быть опасным.В любом случае, кажется, что все работает, за исключением случаев, когда любой из моих результатов поиска содержит одинарные или двойные кавычки.Например, мои результаты поиска могут содержать:
Контакт, дверь 3/4 "утопленаДетектор движения 35 'x 50'
И т. Д. И т. П.
Мой код:
<script type="text/javascript">
function lookup(inputString) {
if(inputString.length == 0) {
// Hide the suggestion box.
$('#suggestions').hide();
} else {
$.post("get_parts.php", {queryString: ""+inputString+""}, function(data){
if(data.length >0) {
$('#suggestions').show();
$('#autoSuggestionsList').html(data);
}
});
}
}
function fill(thisValue) {
$("#inputString").val(thisValue);
setTimeout("$('#suggestions').hide();", 200);
}
</script>
и
<?php
if(isset($_POST['queryString'])) {
$queryString = $_POST['queryString'];
if(strlen($queryString) >0) {
$query = "SELECT short_desc
FROM equipment
WHERE short_desc
LIKE '$queryString%'
ORDER BY short_desc
ASC LIMIT 10";
$result = mysql_query($query) or die("There is an error in database");
while($row = mysql_fetch_array($result)){
$escaped_desc_html = htmlentities($row['short_desc']);
$escaped_desc_escape = addslashes($row['short_desc']);
echo
"<li onClick=\"fill('".$escaped_desc_html."');\">".$escaped_desc_html."</li>";
};
};
};
?>
Я пытался сохранить данные в MYSQL следующим образом:
Контакт, дверь 3/4 \ "утопленДетектор движения 35 \ 'x 50 \'
Но потом он появляется на странице, выглядя так же.
Я пробовал addlashes (), htmlentities (), комбинации обоихи это продолжает ломаться.Я пробовал escape () в javascript, но тогда я не получаю никакого форматирования, и список представляет собой непрерывный блок перемешанного текста.
Моя проблема в том, что результаты моего поиска передаются обратно в Jquery,эта кавычка или двойные кавычки заставляет думать, что команда закончена, и я получаю ошибку об отсутствии).Есть ли способ заставить Jquery игнорировать любые html, косые черты или кавычки, которые возвращаются как данные?Может быть, он рассматривает это как объект вместо команд.Даже с htmlentities () the & quo;все еще нарушает код.Это сводит меня с ума!Проблема всегда ломается в этих двух местах:
$('#autoSuggestionsList').html(data);
а также$("#inputString").val(thisValue);