2

我只是想让 XMLHttpRequest 在 Phonegap 中运行,但它不起作用。一个警报告诉我,我正在恢复 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 文件并在本地请求它时,它仍然运行良好。所以这应该不是问题吗?

EDIT2:有时你在写了一篇很长的帖子后搜索了几个小时零 5 分钟,你终于得到了答案。

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

4

0 回答 0