如何在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);
答案 0 :(得分:0)
首先,您需要将其包装在xhttp.onreadystatechange = function(...
中,这样只有在获得响应时才会触发。也许你只是在中间删除代码,但仍然很好提。
其次,对于200以外的状态进行故障排除通常并不好。有时服务器可以发送201,202并仍然可以正常工作。我会说将else
语句更改为else if
并明确检查if(xhttp.status >= 400)
是否有错误。
然而,我讨厌成为'只使用jQuery'的人,但你已经在使用它了。 jQuery极大地简化了AJAX调用,甚至为结果提供了内置的承诺。你可以像这样完成上述任务:
$.post('http://my-url.com', {my: 'data'}).done(function(response) {
hideToolbar();
$("#myModal").modal();
})
.error(function(error) {
console.log('did not work because of', error)});