0

私は現在、phonegapを使用してHTML5とZepto.jsを使用したモバイルアプリケーションを作成しています。私たちのサーバーはRubyonRailsを使用しています。Playbook(テストデバイス)では、アプリケーションはこの1つの画面で約20%の時間フリーズします。その場合、応答せず、ドラッグするとページがスクロールします(通常は無効になっています)。それを行うのはサーバーへのajax呼び出しであると確信しています。呼び出しは次のとおりです。

    $.ajax({
        url: myurl+ajaxData+'&callback=?',
        dataType: 'json',
        async: true,
        callback: "callback",
        success: function(body) { 
            if (body.status === "successful"){
                successful();
            }
            else {
                var errstring = body.status + ": " + body.result
                console.log (errstring);
                alert(errstring);
            }
        },
        error: function(xhr, type) { 
            var errorstring = type + ": " + xhr.status + "\n" + xhr.statusText + "\n" + xhr.responseText;
            alert (errorstring);
            console.log (errorstring);
            storage.setItem("retrieved", "false");
        }
    })

誰かがこれを引き起こしている可能性があることを知っていますか?

4

1 に答える 1

1

呼び出しに適切なタイムアウトを設定し、エラー関数を設定して問題をキャッチすることにより、以下のようにコードを更新することをお勧めします。

$.ajax({
    url: myurl+ajaxData+'&callback=?',
    dataType: 'json',
    async: true,
    error: function(jqXHR, strError){
        if(strError == 'timeout')
        {
          //do something. Try again perhaps?
        }
    },
    success: function(){
        //do something
    },
    timeout:3000
});

エラーのtextStatusパラメーターにアクセスすることで、スローされたエラーのタイプを確認できます:function(jqXHR、textStatus、errorThrown)オプション。オプションは、「timeout」、「error」、「abort」、および「parsererror」です。

于 2012-04-20T11:11:37.687 に答える