3

私は、HTML5、javascript、jQuery、および PhoenGap を使用して開発されたクロス プラットフォーム ブラウザー ベースのアプリケーションである Android モバイル アプリケーションに取り組んできました。

アプリケーションはクライアント サーバー ベースであるため、サーバーからデータを取得するために頻繁に非同期 Web サービス呼び出しを行います。このシナリオでは、膨大な量のデータを含むデータを取得する際に問題に直面しています。ここでは、データを取得するためにバックグラウンドで実行される非常に多くのデータベース クエリがあります。

2G 接続を使用してアプリケーションをテストしていますが、数分後にステータス 0 のエラー メッセージが表示されます。

ここでの私の質問は、応答を受信する前に数分後に Web サービス呼び出しを中止するオプションがモバイル ブラウザーにあるのでしょうか?

データを取得するために ajax 呼び出しを行っています。参考までにサンプルコード。さまざまなタイムアウト オプションをテストしましたが、肯定的な結果はありません。同じことが 3G ネットワークで正常に機能しています。

$.ajax({
            type: "POST",
            url: wsUrl,
            contentType: "text/xml",
            dataType: "xml",
            data: soapRequest,
            async: true,
            timeout:300000,
            tryCount:0,
            retryLimit:3,
            success: processSuccess,
            error: processError
    });
4

1 に答える 1

0

はい、ajax 呼び出し内でタイムアウトを使用できます。たとえば、次のようになります。

  $.ajax({
            url: syncURL,
            data: {},
            dataType:"jsonp",
            timeout: 10000,
            jsonpCallback: 'jsonpxchange',
            success:function (data) {
                console.log("OK!!");
            },
            error: function(jqXHR, exception) {
                if (jqXHR.status === 0) {
                    alert('No network');
                } else if (jqXHR.status == 404) {
                    alert('Not fount [Error: 400].');
                } else if (jqXHR.status == 500) {
                    alert('[Error: 500].');
                }
                if (exception === 'parsererror') {
                    alert('parser error');
                } else if (exception === 'timeout') {
                    alert('timeout');
                } else if (exception === 'abort') {
                    alert('abort');
                } else {
                    alert('Undefined');
                }
        }
        });

ご覧のとおりtimeout、たとえば を (ミリ秒単位で) 使用します10secs。そして撃ったexception===timeout

于 2013-02-14T23:15:20.017 に答える