【发布时间】:2020-01-18 16:16:33
【问题描述】:
这是我到目前为止的想法:我在尝试打印的 console.log 中什么也没有;虽然也没有错误。 我的目标是使用 vanilla javascript (ES6) 处理一个 ajax 请求(稍后多次)。
function loadJSON(callback) {
var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
xobj.open('GET', 'https://www.website.com/wp-json/acf/v3/options/options', true); // Replace 'my_data' with the path to your file
xobj.onreadystatechange = function () {
if (xobj.readyState == 4 && xobj.status == "200") {
// Required use of an anonymous callback as .open will NOT return a value but simply returns undefined in asynchronous mode
callback(xobj.responseText);
}
};
xobj.send(null);
}
function init() {
loadJSON(function(response) {
// Parse JSON string into object
var actual_JSON = JSON.parse(response);
console.log(response)
});
}
});
这是我的网站../options... 文件的样子:
{"acf":{"1yr_short_copy":"<p>Our 1 Year Money Back Guarantee either leaves you 100% satisfied,....
因此,例如 - 我只想获取字段 1yr_short_copy 文本数据并打印到 html div 中。我知道这对于 jQuery 来说非常简单;但我无法在当前应用程序上使用 jQuery - 所以我正在寻找 Vanilla ES6 技术.. 有什么想法吗?
【问题讨论】:
-
如果要使用
responseText,需要将xobj上的responseType设置为text。或者,如果您想在xobj.response中获取 JavaScript 对象而不必使用JSON.parse,请使用json。见Using XMLHttpRequest。但是,您可能想考虑改用Fetch API。 -
是的,如果您不担心 IE 兼容性,请使用 Fetch API。
-
您是否尝试在邮递员中进行测试?我无法从您的服务器获得响应。没有 400,没有 500,没有身份验证错误,完全不行。
-
@HereticMonkey 谢谢;这是有道理的。你到底是什么意思?
-
您在阅读回复之前设置了
responseType。我通常在设置 MIME 类型标头时这样做,因为它们在我的脑海中是相关的。
标签: javascript json ajax ecmascript-6