0

50回以上連続して動作し、ブラウザをクラッシュさせるjavascriptがあります。JSONデータを返すphpスクリプトを実行する関数に2つのajax呼び出しがあります。エラー ハンドラー コードは、Uncaught Error を返すのが内部 (2 番目) の ajax 呼び出しであることを示しています。次に、「クライアントからの 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 スクリプトでは常に Try Catch メソッドを使用し、通常の実行と同様にエラー データも js に送り返すことをお勧めします。接続数が限られているため、データベース接続を使いすぎないでください。一時ファイルを使用して、js からのすべての一時データをキューとして (タイムスタンプ付きで) 保存する必要があります。また、php でコレクター スクリプトを使用して、最新のキュー ファイルを読み取り、それらが XX を超える場合はそれらを評価する必要があります。レコードなど、キューに入れられたすべてのデータを一度にデータベースに保存します。

于 2013-11-20T10:39:58.180 に答える