0

当 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.

4

2 回答 2

1

来自错误回调的 jQuery Ajax 文档:

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

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

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

于 2012-09-18T18:07:19.033 回答
0

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

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

你应该处理你的消息。

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

success(data, textStatus, jqXHR)

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

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

于 2012-09-19T10:53:44.463 回答