Автозаполнение Ajax с использованием Post приводит к ошибке "Сброс соединения" и консольной ошибке "net::ERR_EMPTY_RESPONSE"

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

Мой сайт размещен на 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 по ошибкам, связанным с моей ситуацией, не сильно помог, и я не уверен, что это проблема с сервером, проблема с браузером или проблема с кодом.

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

0 ответов

Другие вопросы по тегам