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