15

現在、PhoneGap を使用してプロジェクトを開発しており、すでにあるローカル Web サーバーに対して ajax 要求を行う必要があります。

PHP コード

header('Access-Control-Allow-Origin: *');  

とにかく、Android で jQuery を使用して ajax リクエストを実行すると、次のエラーが発生します (adb logcat で):

D/chromium(23078): Unknown chromium error: 0

Javascript コードは次のとおりです。

$.ajax({url:"http://192.168.1.219/works/privati/folder/api.php/getlastmaginfo",dataType:"json",success:function(data)
{
    console.log("Finished loading by ajax");
    console.log(data);
}});

Ripple Emulator では期待どおりに動作しますが、Android では違います。

なにか提案を?お手伝いありがとう!

更新 2013 年 8 月 21 日:

いくつかの調査の後、$.ajax は PhoneGap では動作しないという結論に達しました (理由がわからない、おそらくバグ?)。代わりに $.get を使用する必要がありますが、$.get を使用してリクエストを行うUnknown chromium error: -6 と、問題は Android の WebView URL メカニズムのバグによるものであることがわかります。

うまく機能する解決策が見つかるまで、調査を続けます

UPDATE 2013-08-21 (2): これを使用しても機能しません...

var fileTransfer = new FileTransfer();

fileTransfer.download(
    "http://192.168.1.219/works/privati/qlipmag/api.php/getlastmaginfo",
    "json.json",
    function(entry) {
        console.log("OKAY");

    },
    function(error) {
        console.log(error);
    }
);

エラーはnew FileTransfer();=>Uncaught ReferenceError: FileTransfer is not defined

更新 2013 年 8 月 22 日:

外部画像を読み込んでも機能しません:

<img src="http://externalhost.com/image.jpg"/>

同じエラー。

Android マニフェスト ファイルでは、既にアクセス許可を設定しています。

<uses-permission android:name="android.permission.INTERNET" />

問題がどこから来るのかはよくわかりません...

UPDATE 2013-08-27: PhoneGap for iPhone (iPhone Emulator 内) で同じコードを試したところ、外部 Web サイトを使用したときに ajax 要求が成功しました。Android でも外部 Web サイトを使用しても、同じ結果は得られません。同じエラー。

誰でも理由がわかりますか?アクセス元が細かく設定されている...

4

4 に答える 4

5

UPDATE 2013-08-27 (1時間後)

問題は解決しました

実際、PhoneGap は IP アドレスへの ajax リクエストを許可せず、(config.xml で) ホワイトリストに登録されたドメインへのリクエストのみを許可します。運用サーバー(ドメイン付き)を使用してテストしたところ、機能しました。

とにかくありがとう。これが役立つことを願っています

于 2013-12-27T19:48:07.193 に答える
2

私のように誰かがつまずいた場合に備えてこれを明確にするために、 $.ajax は確かに PhoneGap/Cordova で動作しますが、ドメインはホワイトリストに登録する必要があります。

于 2013-12-23T14:43:52.243 に答える
0

キャッシュを無効にしてみる

$.ajax({
    cache: false,
    //your code
});

このエラー メッセージは実に空虚です。これは主に、アプリがファイル システムでリソースを見つけられないことを意味します。そのため、キャッシュを無効にしてみてください。これにより、常にサーバーからリソースが読み込まれます。

于 2013-08-20T07:27:02.667 に答える