0

サーバーに Jquery Ajax XmlHttpRequest クロスドメイン要求を行う PhoneGap (Cordova Apache) でアプリを開発しています。

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

/*
 * Create the XMLHttpRequest instance
 */
function getXDomainRequest() {
    var xdr = null;

    if (window.XDomainRequest) {
            xdr = new XDomainRequest(); 
    } else if (window.XMLHttpRequest) {
            xdr = new XMLHttpRequest(); 
    } else {
            alert("Votre navigateur ne gère pas l'AJAX cross-domain !");
    }

    return xdr;        
}


/*
 * Load the data from menu into XMLHttpRequest and call create menu
 */
function sendData() {
        var xdr = getXDomainRequest();

        xdr.onload = function() {
                var dcat = $.parseJSON(xdr.responseText);
                createMenu(menu, dcat);
                configureMenuScript();
        }

        xdr.open("GET", "http://preview.********.com/api/ApiProductList");
        xdr.send();
}

sendData();

Firefox 28、IE 11、および Chrome 34 で正常に動作します。また、AVD android 4.0 を搭載した android エミュレーターでも正常に動作します。

Manifest.xml ファイルに次のデータを入れます

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

そしてConfig.xmlで

<param name="android-package" value="org.apache.cordova.core.NetworkManager" />
<access origin="*" />

上記のJSスクリプトでcorsも許可しています

$.support.cors = true;
$.mobile.allowCrossDomainPages = true;

これにより、クロスドメインが許可されます。


-> 私のデバイスでは動作しないという問題があります。(Android 4.2.2) つまり、アプリはうまくロードされますが、ajax 要求からデータを表示すると、もう機能しません。

マニフェストまたは構成ファイルで認証が欠落している可能性がありますか?

残念ながら、デバイス上でライブでデバッグすることはできません:s

前もって感謝します !

nb: Windows 8.1 - PhoneGap Cordova Apache 3.4

4

1 に答える 1

0

私は自分の問題を発見しました。実はコードエラーではなく、会社のファイアウォールが原因でした。

したがって、基本的に、上記のコードは機能しています。少なくとも、phonegap で XMLHttpRequest を実装する方法についての素晴らしい要約です:)

于 2014-04-28T08:39:21.787 に答える