AJAX 查询工作 50+ 次,然后崩溃 JavaScript

AJAX query works 50+ times then crashes javascript

本文关键字:然后 崩溃 JavaScript 查询 工作 AJAX      更新时间:2023-09-26

我有一些连续工作50+次的javascript,然后使浏览器崩溃。 我在函数中有 2 个 ajax 调用,运行返回 json 数据的 php 脚本。 错误处理程序代码显示返回未捕获错误的是内部(第二个)ajax 调用。然后我收到一条 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;  
}

我建议在 ajax php 脚本中始终使用 Try Catch 方法,并将错误数据也发送回 js,因为它是正常执行。不要使用太多的数据库连接,因为连接的数量是有限的!您应该使用临时文件将所有来自 js 的临时数据存储为队列(带有时间戳),并且您应该使用 php 中的收集器脚本,该脚本读取最新的队列文件,并评估它们(如果它们包含更多)超过 XX 记录或其他内容,并将所有排队的数据立即保存到数据库中。