javascript post / get request readystate catch错误

时间:2016-08-25 15:09:33

标签: javascript

如何在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);

1 个答案:

答案 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)});