0

すべてが ajax にある重いアプリがあります。

現在、ページの読み込み時に 10 以上の ajax リクエストが発生し、そのうちのいくつかは不明な理由でランダムに失敗します。

これらのリクエストが失敗した理由を知る方法はありますか?

エラー内のエラーをキャッチできます: {} ケース 、失敗した場合、またはお勧めできない場合 (ループを回避する)、Ajax 関数を再度呼び出す必要がありますか?

これは、すべてのリクエストを処理するために使用する Ajax 関数です。

function ajax(aurl,dataType,requestData,successListener,compelteListener,errorListener,async) {

var $xhr=null;
async = typeof async !== 'undefined' ? async : true;

if($.ajax) {
    $xhr=$.ajax({
        type: 'post',
        url : aurl,
        async : async,
        dataType : dataType,
        data:requestData,
        success: function(response){
            checkAjaxResponse(null,response,successListener,errorListener);
        },
        complete:compelteListener,
        error:function(response){
            checkAjaxResponse(null,response,errorListener);
        }
    });
}else {
    alert("jquery not found ..");
}
return $xhr;

}

更新 1:

エラー内の応答で console.log を実行すると、次のようになります。

  {"readyState":0,"responseText":"","status":0,"statusText":"error"}

更新 2:

Apacheログを見ると、多くのことがわかります:

[notice] Parent: child process exited with status 255 -- Restarting.

また、ajax リクエストを次のように変更しました。

error:function(response){
 ajax(aurl,dataType,requestData,successListener,compelteListener,errorListener,async); 
}

しかし、Ajax が常に失敗すると、システムがクラッシュする可能性があります...

アップデート #3

本番環境でこれらのエラーがないため、WAMPの問題だと思います。

とにかく、あなたの努力に感謝します!

4

1 に答える 1

0

問題は Windows 上の Apache に関連していましたが、理由は不明で、サーバーがランダムにクラッシュしました。

httpd のスタックに関連する情報を見つけました (1 MB の Windows のデフォルトと Linux の 8 MB のデフォルト)

私たちの製品は Linux であり、Windows の開発者でした。

関数を次のように変更しました。

error:function(response){
                counter++;
                checkAjaxResponse(null,response,errorListener);
                if(counter > 5) {
                    jAlert(get_label('technical_error') + '<br><br>' + get_label('function_called')+ aurl,get_label('attention_loading')); 
                    setLoading(false);  
                } else {
                   return ajax(aurl,dataType,requestData,successListener,compelteListener,errorListener,async,counter);
                }
            }
于 2013-02-28T17:35:15.673 に答える