0

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

1 回答 1

0

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

于 2013-11-20T10:39:58.180 回答