无论成功与否,都可以从getJSON获取回调

时间:2013-09-10 21:42:38

标签: javascript jquery

我有一种情况需要处理潜在的错误CGI解释器。我需要在所有情况下从getJSON调用获得某种类型的回调。这包括发送到testIt函数的伪造参数(见下文)和发送虚假响应的CGI。我想在try / catch中包装整个东西以处理第一种情况,并添加一个.done来处理第二种情况。但是如果CGI处理器输出无效响应,我的.done就不会被调用。我如何确保始终收到回电?

我正在使用的代码如下。

function testIt() {
    try
    {
        console.log('start');
        $.getJSON(
            // URL of the server
            cgi_url,
            // pass the data
            {
                data: 'bogus',
            },
            // If the AJAX call was successful
            function() {
                console.log('worked');
            }
        )
        .done(function() {
                console.log('done');
            });
    }
    catch (err) {
        console.log('exception');
    }
}

1 个答案:

答案 0 :(得分:3)

  

如何确保始终收到回电?

使用.always()附加处理程序!如果您想以不同方式处理错误,请使用fail handler

console.log('start');
$.getJSON(cgi_url, {data: 'bogus'})
    .done(function() { // If the AJAX call was successful
        console.log('worked');
    })
    .fail(function() { // If the AJAX call encountered an error
        console.log('exception');
    })
    .always(function() { // When the AJAX call ended
        console.log('done');
    });