1

サーバーに接続するために、起動時にモバイルアプリでjsonp呼び出しを行っています。Phonegap 2.1 と Zepto 1.0-rc1 を使用しています。HTML ページの下部で、DOM の準備が整った状態で初期化を行います。

<script type="text/javascript">
if (!$) {$ = Zepto};
$(init);
document.addEventListener('deviceready', Perksea.deviceReady);
</script>

...

function init() {
    var router = new Backbone.Router();
    ...
}
function deviceReady() {
    isConnected();
    isConnected();
}
function isConnected() {
    $.ajaxJSONP({
        url: 'http://localhost/isconnected',
        success: function(response) {
            console.log('response is ' + response);
        }
    });
}

最初の JSONP 呼び出しは "response is undefined" を出力しますが、2 番目の JSONP 呼び出しは機能します。JSONP 呼び出しを setTimeout(isConnected, 5000) に入れてみましたが、同じ結果が得られました。URLが正しいことなどをすでに確認しています。

誰もこのようなものを見たことがありますか?

ありがとうスティーブ

4

1 に答える 1

1

最初の呼び出し (応答が定義されていない) で「成功」コールバック関数に入るので、サーバーが最初の呼び出しに適切に応答していると確信していますか? 200 応答を返しているように聞こえますが、最初の呼び出しのデータはありません。

「エラー」コールバックを追加して、それが何か役立つかどうかを確認できます

$.ajaxJSONP({
    url: 'http://localhost/isconnected',
    success: function(response) {
        console.log('response is ' + response);
    }
    error: function(response) {
        console.log('error is ' + response);
    }
});

最後に、AJAX は非同期であるため、isConnected()への 2 つの呼び出しは、最初の応答を待たずに、すぐに次々と起動します。サーバー側でどのように見えるか興味があります(上記を参照)。

于 2012-11-04T02:55:32.317 に答える