Автозаполнение Ajax с помощью сообщения приводит к «Соединение было сброшено» ошибка и & quot; net :: ERR_EMPTY_RESPONSE & quot; ошибка консоли

Здравствуйте и спасибо, что нашли время, чтобы прочитать мой вопрос.

Мой сайт размещен на Godaddy, и у меня есть пакет Deluxe Linux Hosting.

Моя веб-страница помогает пользователям находить рынки с помощью простой формы, в которой используются JQuery, Ajax, PHP и MySQL для отображения предложений, относящихся к их поисковому запросу.

Я использую функцию автозаполнения в поле поиска, поэтому, когда пользователи вводят свой поисковый термин, соответствующие предложения появляются под полем ввода в элементе div с идентификатором «list_area».

Предложения заполняются JQuery и PHP-скриптом, который заполняется поисковыми терминами через AJAX-метод «Post» (теперь это AJAX-метод, так как я хотел записывать ошибки в консоль).

Вот где на HTML-странице вызывается js-скрипт:

<input autocomplete="off" type="text"class="form-control input-lg" name="market_search"id="market_search" placeholder="Enter a market name"onkeyup="autoComplete();">

На той же странице также есть функция protectDefault, предотвращающая отправку формы без запроса:

    <script>
$( "#search_form" ).submit(function(e) {
if( $('#market_search').val() =='' ){
e.preventDefault();
}
});
</script>

Вот Autocomplete.js

function autoComplete()
{
var list_area   = $('#list_area');
var min_length  = 1;
var search_term = $('#market_search').val();

if (search_term.length >= min_length) {

$.ajax({
type: 'POST',
url: 'assets/scripts/search_markets.php',
data: {
search_term: search_term
},
success: function(data){

list_area.hide().html(data).fadeIn('fast');
console.log(status);
},
error: function(xhr, textStatus, error){
alert("Unable to retrieve data. Please try again.");
console.log(xhr.statusText);
console.log(textStatus);
console.log(error);
}
});

}else{
list_area.hide();
}
}function set_item(item) {

// change input value
$('#market_search').val(item);

// hide proposition list
$('#list_area').hide();
}

Вот search_markets.php

<?php
include("connect_to_mysql.php");

$output = '';
$search_term = mysql_real_escape_string($_POST['search_term']);

$sql = mysql_query("SELECT name FROM markets
WHERE name LIKE '%$search_term%'
ORDER BY name LIMIT 0,10
");

$num_rows = mysql_num_rows($sql);

if($num_rows > 0){

$output .= '<ul>';
while($row = mysql_fetch_array($sql)){

$market_name = $row['name'];
$market_name = preg_replace('/\s{2,}/u', ' ', $market_name); // replaces large spaces with single space between words

$output .='<li onclick="set_item(\''.str_replace("'", "\'", $market_name).'\');">'.$market_name.'</li>';
}
$output .= '</ul>';
}
echo($output);
mysql_close($mysql_conn);
?>

Код ведет себя так, как вы ожидаете, и возвращает список предложений в div #list_area.

Однако, если вы используете поле поиска слишком часто в течение примерно 30 секунд — то есть вы вводите букву, удаляете букву, вводите букву, делаете это несколько раз и т. Д. И т. Д. — предложения перестают появляться, и сайт становится временно недоступным, если вы попытаетесь перейти на домашнюю страницу.

Эта ошибка появляется: «Соединение было сброшено»

И в Chrome я получаю ошибку: «net :: ERR_EMPTY_RESPONSE»

В Firefox я не получаю этот код ошибки, он просто выделяет попытку подключения к search_markets.php красным цветом, и больше никаких подробностей не приводится.

Я поставил вопрос здесь, так как я немного новичок и не знаю, как вообще начать поиск решения; Поиск в Google по ошибкам, связанным с моей ситуацией, не сильно помог, и я не уверен, что это проблема с сервером, проблема с браузером или проблема с кодом.

Большое спасибо заранее за любую помощь, которую вы можете предложить.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector