AJAX-запрос работает более 50 раз, после чего происходит сбой JavaScript

0

У меня есть javascript, который работает 50+ раз подряд, а затем сбой браузера. У меня есть 2 вызова ajax в функции, которые запускают скрипты php, возвращающие данные json. Код обработчика ошибок показывает, что он является внутренним (вторым) ajax-вызовом, который возвращает ошибку Uncaught. Затем я получаю сообщение с сообщением 408 TImeout с сообщением "Тайм-аут сервера, ожидающий HTTP-запроса от клиента". Любая помощь будет принята с благодарностью. Вот код:

function doTask(btnID)
{
    var data =
    {      
        "action": "test"    
    };
    data = $(this).serialize() + "&" + $.param(data);
    $.ajax(
    {
        type: "POST",
        dataType: "json",
        url: "doTask.php",
        data: data,
        success: function(data) 
        {
            var result = data['Result'];
            document.getElementById('Result').value=result;
            // Update result
            var balance = result;
            document.getElementById('txtAcctBalance').value = balance.toFixed(8);
            var post_data = { amount: balance};
            $.ajax({
                type: "POST",
                dataType: "json",
                url: "updateAcctBalance.php",
                data: post_data,
                async: false,
                error: function(jqXHR, exception) 
                {
                    if (jqXHR.status === 0) {
                        alert('Not connect.\n Verify Network.');            
                    } 
                    else if (jqXHR.status == 404) 
                    {
                        alert('Requested page not found. [404]');
                    }
                    else if (jqXHR.status == 500)
                    {
                        alert('Internal Server Error [500].');
                    }
                    else if (exception === 'parsererror') 
                    {
                        alert('Requested JSON parse failed.');
                    }
                    else if (exception === 'timeout')
                    {
                        alert('Time out error.');
                    } 
                    else if (exception === 'abort')
                    {
                        alert('Ajax request aborted.');
                    }
                    else
                    {
                        alert('Uncaught Error.\n' + jqXHR.responseText);            
                    }    
                }
            });
        },
        error: function(jqXHR, exception) 
        {
            if (jqXHR.status === 0) {
                alert('Not connect.\n Verify Network.');            
            } 
            else if (jqXHR.status == 404) 
            {
                alert('Requested page not found. [404]');
            }
            else if (jqXHR.status == 500)
            {
                alert('Internal Server Error [500].');
            }
            else if (exception === 'parsererror') 
            {
                alert('Requested JSON parse failed.');
            }
            else if (exception === 'timeout')
            {
                alert('Time out error.');
            } 
            else if (exception === 'abort')
            {
                alert('Ajax request aborted.');
            }
            else
            {
                alert('Uncaught Error.\n' + jqXHR.responseText);            
            }
        }
    });
    return false;  
}
  • 0
    может твой сервер не отвечает?
  • 0
    Проверьте updateAcctBalance.php. могут быть некоторые утечки памяти при обработке на этой странице.
Показать ещё 4 комментария
Теги:

1 ответ

0

Я предлагаю всегда использовать метод Try Catch в сценариях ajax php и отправлять обратно данные об ошибках в js, поскольку это было бы нормальное выполнение. Не используйте слишком много подключений к базе данных, потому что количество подключений ограничено! Вы должны использовать временный файл для хранения всех временных данных, поступающих из js в качестве очереди (с отметкой времени), и вы должны использовать скрипт коллектора в php, который читает последние файлы очереди, и убеждать их, если они содержат больше, чем XX записи или что-то еще, и одновременно сохраняет все данные в очереди в базу данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню