gpt4 book ai didi

javascript post/get 请求就绪状态捕获错误

转载 作者:行者123 更新时间:2023-11-28 05:38:31 25 4
gpt4 key购买 nike

如何在 JavaScript 中捕获 post 请求期间的错误?我知道如果 readyState == 4 表示请求已完成,如果 status==200 表示请求成功。这个想法是在发布请求失败时显示一条消息,例如互联网连接失败或值错误。

目前我有这样的东西,模态工作正常,当它

var xhttp = new XMLHttpRequest();
xhttp.open("POST", url, true);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
// document.getElementById("demo").innerHTML = xhttp.responseText;
hideToolbar();
console.log('Saving successful.');
} else if(xhttp.status == "failed"){
console.log('Sorry there is a problem.');
}
};
var data = JSON.stringify({
"name":"name",
"definition":diagramData
});
xhttp.send(data);

最佳答案

首先,您需要将其包装在 xhttp.onreadystatechange = function(... 中,这样只有在收到响应时才会触发。也许您只是剪掉了其中的代码中间,但仍然值得一提。

其次,对 200 以外的状态进行全面失败通常不太好。有时服务器可以发送 201,202 并且仍然可以正常工作。我想说将您的 else 语句更改为 else if 并显式检查 if(xhttp.status >= 400) 是否有错误。

但是,我讨厌成为“只使用 jQuery”的人,但你已经在使用它了。 jQuery 极大地简化了 AJAX 调用,甚至提供了对结果的内置 promise 。您可以像这样完成上述操作:

$.post('http://my-url.com', {my: 'data'}).done(function(response) {
hideToolbar();
$("#myModal").modal();
})
.error(function(error) {
console.log('did not work because of', error)});

关于javascript post/get 请求就绪状态捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39148841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com