[英]JavaScript - Issue with using ReST API
不知道我在做什么错。
的HTML
<form id="inp" onsubmit="process()">
<input id="link" type="text" name="link" placeholder="Enter your link">
<input id="submit" type="submit" name="submit" value="→">
</form>
的JavaScript
function createRequest() {
let result = null;
if (window.XMLHttpRequest) {
result = new XMLHttpRequest();
result.overrideMimeType('application/json');
}
else {
window.alert("Abort!");
}
return result;
}
let c=0;
function process() {
let l = document.getElementById("inp").link.value;
let resp;
let req = createRequest();
let payload = {
link: l,
ignoreException: true
};
req.open("POST", url, true);
req.setRequestHeader("Content-Type", "application/json");
req.send(payload);
req.onreadystatechange = function () {
if (req.readyState === 4 && req.status === 200) {
resp = req.responseText;
console.log("response text - " + resp);
}
console.log(req.readyState + " " + req.status + " " + c);
};
}
我希望它记录每个状态更改的readyState和状态,并记录最终状态的响应文本。
它记录“ 4 0 1”,这意味着它仅更改一次状态,并将其直接更改为最终状态。
当执行.open()、. setRequestHeader()和.send()函数时,应更改状态。
我该如何进行这项工作?
注意:“ url”参数是api url。
如果要为.open()和.setRequestHeader()调用onreadystatechange事件,则需要在调用open()和setRequestHeader()函数之前注册onreadystatechange事件处理程序。
因此,如果将onreadystatechange定义上移几行,那应该很好。
所以像这样:
function process() {
let l = document.getElementById("inp").link.value;
let resp;
let req = createRequest();
let payload = {
link: l,
ignoreException: true
};
req.onreadystatechange = function () {
if (req.readyState === 4 && req.status === 200) {
resp = req.responseText;
console.log("response text - " + resp);
}
console.log(req.readyState + " " + req.status + " " + c);
};
req.open("POST", url, true);
req.setRequestHeader("Content-Type", "application/json");
req.send(payload);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.