2

Phonegap で XMLHttpRequest を実行しようとしていますが、うまくいきません。アラートで、401 ステータスに戻っていることがわかりました。既にわかっているように、このエラーは、情報を取得する権限がないことを意味します。デスクトップのブラウザーにポップアップが表示され、ユーザー名とパスワードを入力できます。その後、以下のコードでうまく機能します。

Android では、このポップアップは表示されませんが、それは問題ではありません。次のように、リクエストで指定されたユーザー名とパスワードを使用してリクエストをテストしようとしました。

xmlhttp.open('get', 'https://my-url', true, "username", "password");

残念ながら、これは機能していません。そこで、次の可能性を試しました。

xmlhttp.open('get', 'https://username:password@my-url', true);

しかし、これも機能していません。まだ 401 が返されます。ブラウザで同じコードを実行すると、Auth-PopUp なしでリクエストが返されます (動作しています!)。

今、私は本当に混乱しています。私の request-url で使用されている証明書は、公式に信頼されているものです (自己署名されていません)。私のconfig.xmlは言う

<access origin="*" />

これも間違いではありません... :(

これが私のコードです。どなたか助けていただければ幸いです。よろしくお願いします。

var xmlhttp = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();

function doReq() {

    xmlhttp.open('get', 'https://my-url', true);
    xmlhttp.onreadystatechange = showData;
    xmlhttp.send(null);

}

function showData() {

    var text = "<table><thead><tr><th>Category1</th><th>Category2</th><th>Category3</th><th>Category4</th></tr></thead>";

    document.getElementById("ausgabe").style.visibility = "visible";

    if (xmlhttp.readyState == 4){

        if (xmlhttp.status == 200 || xmlhttp.status == 0) {

            jsonobj = eval( "(" + xmlhttp.responseText + ")");

            for (i = 0; i < jsonobj.$resources.length; i++) {

            text += "<tr><td>" + jsonobj.$resources[i].Category1 + "</td><td>" + jsonobj.$resources[i].Category2 + "</td><td>" + jsonobj.$resources[i].Category3 + "</td><td>" + jsonobj.$resources[i].Category4 + "</td></tr>"

            }

            document.getElementById("ausgabe").innerHTML = text;

        }

    }

}

編集: 1 つの追加の注意: 私の request-URL は動的なものであり、json 形式でデータを返します。私のブラウザでは問題なく動作しており、データをコピーして txt ファイルに貼り付け、ローカルで要求しても問題なく動作しています。それで、これは問題ではありませんか?

EDIT2: 長い投稿を書いた後、何時間も 5 分かけて検索していると、最終的に答えが得られることがあります。

async を「false」に設定したところ、動作するようになりました...しかし、理由は聞かないでください...おそらく説明できる人がいますか? :)

4

0 に答える 0