3

私はphonegap/cordova1.7.0に取り組んでいます。そして、私はajaxリクエストをサーバーに送信しています。タイムアウトを設定する必要があるので、それをシミュレートします。サーバー側にsleep(30)を含め、クライアント側のjsに30000のタイムアウトがあります。

テストの結果、Androidはタイムアウトのチェックを完全に無視しており、iOSはajax呼び出しを完全に実行できませんが、エラーは発生しないと結論付けました。

誰かがこれを手伝ってくれますか?ajaxタイムアウトがphonegapで機能しないということですか、phonegapでタイムアウトをチェックする別の方法はありますか?jsコードは次のとおりです。

    $.ajax({
        url: url,
        data: data,
        type: 'GET',
        dataType: data_type,
        timeout:3000,

        error: function(xhr, status, error){
            $('body').trigger('network-error') // triggers standard network error
                console.log('network-error')
                console.log('request came back with the error '+error)
                CallbackFail()
        },
        success: function(data){
            // is called from aSuccessCallback in the return
            console.log('success')
            console.log(data)

        }
    })

編集

重要な点について言及するのを忘れました。私はjqueryを直接使用しているのではなく、zeptoを使用しています。

4

2 に答える 2

2

まず第一に、あなた自身でそれを簡単にしてください。weinre http://people.apache.org/~pmuellr/weinre/をインストールします。これは、ajaxリクエストをリアルタイムで追跡するのに役立ちます。したがって、サーバーからの正確なhttp応答を確認できます(存在する場合)。基本的にそれはグーグル開発者ツールと同じインターフェースを持っています。[ネットワーク]タブに移動して、ajaxリクエストをトレースします。

一般に、ajax呼び出しを行うときに考慮すべき重要な注意事項がいくつかあります。

  1. ajaxリクエストを送信するサーバーがホワイトリストに登録されていることを確認してください。そうしないと、サーバーにajaxリクエストを送信できなくなります。(これを行う方法は次のとおりです:http://docs.phonegap.com/en/1.9.0/guide_whitelist_index.md.html

  2. https経由でajaxリクエストを送信する場合は、サーバーに有効な証明書があることを確認してください。そうしないと、phonegapで無効な証明書を手動で無視しない限り機能しません。iOS / androidにはさまざまな手順が必要です。その場合は、正しいstackoverflowリンクを指定できます。

最後に、phonegapプロジェクトで問題なくajaxリクエストを送信していることをお知らせしたいと思います。そして、タイムアウトは期待どおりに機能しています。

于 2012-08-13T19:15:35.467 に答える
0

zeptoのgithubにアクセスしましたが、ajaxタイムアウトがかなり前から問題になっているようです。

https://github.com/madrobby/zepto/issues/search?q=ajax+timeout

これが傾向があるかどうかについてはほとんど言われていません。誰かが私と同じライブラリを使用している場合は、jqueryを直接使用することをお勧めします...

于 2012-08-17T07:28:05.247 に答える