我将此JavaScript代码用于API请求以获取JSON。
function loadJSON(url) {
var xobj = new XMLHttpRequest();
xobj.overrideMimeType('application/json');
xobj.open('GET', url, false);
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
returnval = JSON.parse(xobj.responseText);
}
};
xobj.send(null);
return returnval;
}
该代码处于鼠标单击事件中。完整的URL是用鼠标单击数据生成的。该代码仅适用于同步。我已经使用异步测试了代码,但是使用此代码无法正常工作。 xobj.open('GET',file,true,null,null);
同步后,控制台将写入:
[弃用]不赞成在主线程上使用同步XMLHttpRequest,因为它对最终用户的体验有不利影响。如需更多帮助,请检查https://xhr.spec.whatwg.org/。
好的,嘿!这个问题有很多线程,但是我没有找到解决方案。我使用纯JavaScript,没有Ajax,没有JQuery。
答案 0 :(得分:-2)
您几乎已经异步编写了它。传入回调函数以获取您的returnval
。
function loadJSON(url, callback) {
var xobj = new XMLHttpRequest();
xobj.overrideMimeType('application/json');
xobj.open('GET', url);
xobj.onreadystatechange = function() {
if (xobj.readyState == 4 && xobj.status == '200') {
returnval = JSON.parse(xobj.responseText);
callback(returnval);
}
};
xobj.send(null);
}
loadJSON('https://jsonplaceholder.typicode.com/users', function(result) {
console.log(result)
});