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」に設定したところ、動作するようになりました...しかし、理由は聞かないでください...おそらく説明できる人がいますか? :)