3

私はかなり新しい Android です。Phonegap を使用して開発されたネイティブ アプリで、ajax 呼び出しを含むページが読み込まれないという問題が発生しました。

Cross-domain AJAX POST-request は、携帯電話のブラウザーを含む Web ブラウザーでは問題なく機能しますが、Phonegap を使用して構築されたネイティブ アプリケーションでは機能しません。

durandalデータを取得してページに表示するアプリを作成しましたFacebook。ブラウザーでは正常に動作しますが、ajax 呼び出しを含むページは、.NET を使用して構築されたネイティブ アプリに読み込まれませんPhonegap。注: 他の静的ページは問題なく動作します。

私のAjaxスクリプト:

define(function(require){
  return {
    getCustomers:function(){
      //do some ajax and return a promise
        return $.ajax({
          url: 'http://graph.facebook.com/facebook?callback=?',
          dataType: 'json',
        }).promise();
    }
  };
});

ドメインのホワイトリスト登録 - config.xml

<access origin="*"/>
<!-- <content src="http://mysite.com/myapp.html" /> for external pages -->
<content src="index.html" />

ユーザー権限

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

エラーが発生しました。わからんけどこれ関係あるの?

TypeError: Result of expression 'parentElement' [null] is not an object. at file:///android_asset/www/js/index.js:41
4

3 に答える 3

1

「mobile.allowCrossDomainPages = true;」を渡すとともに、サーバー側でも CORS パラメータを有効にする必要があります。フォンギャップで。

stackoverflow で CORS 関連の質問を検索すると、多くの解決策があります。

モバイル ブラウザでは機能するのに phonegap パッケージでは機能しない理由を説明しましょう。Phonegap パッケージは、アプリケーションのローカル ファイル システムからファイルを取得し、参照ドメインを「ローカル」にします。URL にリクエストを送信すると、明らかに別のドメインにあるため、CORS になります。phonegap 設定で CORS パラメータを有効にすると、ほとんどの問題が解決します。関連する場合は、Web サービス/URL が CORS をサポートしていることを確認する必要があります。サーバー側の CORS パラメータの有効化を探します。

于 2013-11-11T05:41:52.700 に答える
0

それはうまくいくはずです。とにかく、これをヘッドコードに追加してみてください。

$(document).bind("mobileinit", function () {
    $.support.cors = true;
    $.mobile.allowCrossDomainPages = true;
});

,また、ここを削除してみてください

    return $.ajax({
      url: 'http://graph.facebook.com/facebook?callback=?',
      dataType: 'json' //<<---HERE
    }).promise();

それjsonjsonp

于 2013-11-06T16:31:15.867 に答える