如何解决加载 XHR 响应数据以索引 HTML 页面
我有一个 .NET api 端点,它返回匿名数据,客户端通过 Promise 接收这些数据,如下所示:
function getDataByPromise(method,url) {
return new Promise(function (resolve,reject) {
let xhr = new XMLHttpRequest();
xhr.open(method,url);
xhr.send();
xhr.onload = function () {
if (this.status >= 200 && this.status < 300) {
resolve(xhr.response);
} else {
reject({
status: this.status,statusText: xhr.statusText,});
}
};
xhr.onerror = function () {
reject({
status: this.status,});
};
});
}
或者像这样通过回调:
function getDataByCallback(method,url,done) {
let xhr = new XMLHttpRequest();
xhr.open(method,url);
xhr.send();
xhr.onload = function () {
done(null,xhr.response);
};
xhr.onerror = function () {
done(xhr.response);
};
或通过异步/等待
async function getDataByAsyncAwait() {
try {
console.log("By Async Await");
await getDataByPromise(method,url);
} catch (error) {
console.log(error);
}
}
或者像这样通过普通的 XHR:
function getDataByXHR(method,url) {
let xhr = new XMLHttpRequest();
xhr.open(method,true);
xhr.onload = function () {
console.log("By XHR: ");
console.log(xhr.response);
let gameSettings = JSON.parse(xhr.response);
this.data = gameSettings;
waitAsyncAwait(this.data);
waitPromise(this.data);
};
xhr.onerror = function () {
console.error("An error occur getting the XMLHttpRequest");
};
xhr.send();
}
如何通过按下按钮或表格在 html 文件中显示这些 JSON 对象? 我应该将函数加载到这样的按钮中吗?
<button onclick="">Get Data By Normal XHR</button>
如果是这种情况,那么我应该将 XHR 请求的响应保存到数组或常量或某种类型的变量中并显示它们吗? 或者我应该采取任何其他方法在 HTML dom 上显示 XHR 响应吗?
解决方法
这是一个例子:
TypeError: Cannot read property 'fullLoader' of undefined
HTML:
var url = "https://sourceforge.net/projects/kaais/files/stats/json?start_date=2013-08-18&end_date=2018-04-19";
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
document.getElementById('output').innerHTML = JSON.parse(xmlHttp.responseText).total;
}
xmlHttp.open("GET",url,true);
xmlHttp.send();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。