5

これで髪を抜いています。

ブラウザで動作するサーバーへのjqueryajax呼び出しがあります。これは、httpスニッフィングのためにローカルプロキシに接続するとデバイスで動作しますが、wifiまたはセルネットワークでプロキシから外れるとハングします。

ドメインを許可するようにphonegapconfig.xmlを設定しました。リクエストは、サーバーでのgetとajax呼び出しです。あなたはそれがjsonPであることに気付くでしょう。

呼び出しは単純なjqueryです。とにかくコードを投稿します。apiオブジェクトは、アプリケーションの機能を保持するために作成したカスタムオブジェクトです。

var dfd = $.ajax({
    url: myurl, // I've confirmed the url, but prefer to keep it private
    data: {
        ApplicationID: api.applicationID,
        DeviceID: api.device.uuid(),
        OSVersion: api.device.version(),
        DeviceVersion: api.device.platform(),
        Lat: lat,
        Lng: lng,
        Bearing: bearing
    },
    dataType: "jsonp",
    timeout: 30000
})
.fail(function (event, jqXHR, ajaxSettings, thrownError) {
    console.error(jqXHR);
});

私はこの答えを試しましたが、私の問題に最も近いものを見つけることができましたが、うまくいかないようです。 PhonegapjQueryajaxリクエストが機能しない

足りないものはありますか?私は何が間違っているのですか?

編集: 私が言及するのを忘れました、私がajax呼び出しに設定したタイムアウトは何もしません、それはただそれを無視しているようです。

4

3 に答える 3

0

私の問題はまったく異なっていたことがわかりました。モバイル ブラウザーが AMD スクリプトを追加する方法が原因で、依存関係が読み込まれませんでした。すべてのスクリプトを単一のファイルに統合することでこれを修正し、それ以来機能しています。

于 2012-10-15T15:44:40.503 に答える
0

あなたの問題は、あなたが言ったように、クロスドメインではないかもしれません。サーバーはリクエストをログに記録しますか? index.html からリンクした後、2 番目の (同じ) リクエストで同様の問題が発生しました。最初のリクエストは正常に機能します。phonegap のバグである可能性があるという情報を見つけました。

于 2012-09-03T06:30:33.483 に答える
0

json文字列をプルするので、使用しないでください

$.getJSON("http://www.example.com?jsoncallback=?",
    function(data){ ... }

jsoncallback に注意してください。ここで何が起こるかというと、jquery は追加のパラメーターをコードに解析して、結果が実際の要求からのものであることを確認します。これは、クロスドメイン リクエストで発生します。

「json-builder」に互換性を持たせるには、単純にリクエストの前に jsoncallback を配置します。

$return =  $_GET["jsoncallback"].'({"title" : "test", "author" : "someone"});
于 2012-08-24T13:42:03.023 に答える