【发布时间】:2019-06-02 11:45:37
【问题描述】:
我需要从网页获取 JSON 响应文本才能对其进行解析。然而,当我创建我的 XML HTTP 请求时,我得到的 HTML 甚至不是来自我请求的页面。
我已验证内容类型设置为 application/json,需要 xmlhttprequest 而不是 xhr2(不起作用),将 XMLHttpRequest.responseType 设置为“json”等等。我尝试了一个不同的 url (https://jsonplaceholder.typicode.com/todos/1) 并且我能够获取我的 JSON 响应文本。但是,使用我的“秘密 URL”(不幸的是无法提供),我得到了 HTML 响应。
我不确定我从哪里获得 HTML,我查看了 SauceLabs,但此时它失败了。我也尝试过 browser.getURL(),但我得到了一个
function myXMLRequest() {
var XMLHttpRequest = require('xhr2');
XMLHttpRequest.responseType = "json";
var xmlhttp = new XMLHttpRequest();
// this URL works, but my secret URL does not
var url = "https://jsonplaceholder.typicode.com/todos/1";
xmlhttp.onreadystatechange = function() {
console.log("this.readyState: " + this.readyState + "
this.status: " + this.status);
if (this.readyState === 4 && this.status === 200) {
console.log("this.responseText: " + this.responseText);
} else {
console.log("I was not ready");
}
};
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
在有效的 URL 中,我收到如下响应文本:
{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
}
我希望我的秘密 URL 获得这样的响应。目前它获得了一个 HTML 响应,从我的图片中可以看出。
【问题讨论】:
-
您正在设置不存在的
XMLHttpRequest.responseType的静态属性。尝试设置xmlhttp.responseType,否则默认为text。 -
谢谢@ZorgoZ。我修好了。不幸的是,它仍然会导致同样的问题。