如果Web服务返回null结果,如何使用JSON捕获错误

时间:2012-09-18 17:57:57

标签: jquery error-handling jsonp

我希望在URL提供的数据不存在时显示错误。我已尝试使用以下代码,但它无效。

function getNum() {
    var num = document.getElementById('number').value;
    //alert(number);
    $('#shownum').empty();
    $(document).ready(function() {
        $.jsonp({
            url : 'http://localhost/json/num.php?&idnum='+num,
            callbackParameter : 'callback',
            success : function(data, status) {
                $.each(data, function(i, item) {
                    var a = "";
                    var name = item.name;
                    var dob = item.dob;
                    var addr = item.addr;
                    b +='<br>' + name + '<br>';
                    b +=dob + '<br>';
                    b +=addr + '<br>';

                    $('#shownum').append(b);
                });
            },
            error : function() {
                $('#shownum').append('data not found');
            }
        });
    });
}

例如,如果URL返回?(null);,我该如何向#shownum id附加错误通知。

2 个答案:

答案 0 :(得分:1)

从jQuery Ajax文档中获取错误回调:

  

注意:不会为跨域脚本和JSONP请求调用此处理程序。

使用jQuery的本机方法无法捕获JSONP请求的错误。

jQuery-JSONP似乎为Opera以外的所有浏览器启用了错误处理。如果您遇到问题,我建议您在项目的GitHub页面上打开一个问题。

答案 1 :(得分:0)

我处理此问题的方法是将成功字段添加到JSONP响应中。试试这样:

{"success":false,"response":"data or objects"}

你应该处理你的信息。

第二种方法是处理成功事件并检查响应是否为200(成功)或例如404(url不存在)。

success(data, textStatus, jqXHR)

如果成功问题,请尝试以下页面:jQuery Ajax。同样,您感兴趣的参数是textStatus。

另一种可能是为你的ajax调用设置超时:timeout : 5000,。之后你应该处理错误。当然你只能猜到为什么会超时。