我只是想在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;

        }

    }

}

编辑:另外一个注释:我的请求URL是动态的,它以json格式返回数据 . 它在我的浏览器上运行良好,当我将数据复制/粘贴到txt文件并在本地请求时,它仍然正常工作 . 所以这应该不是问题?

编辑2:有时你在写了一篇长篇文章后搜索了几个小时和五分钟,你终于得到了答案 .

我只是将异步设置为'false',现在它正在工作......但是不要问我为什么......也许有人可以解释它?:)