一尘不染

为什么$ .getJSON静默失败?

json

$.getJSON当返回的数据不是有效的JSON时,jQuery
静默失败似乎非常不便。为什么用无声失败来实现呢?用更好的故障行为(例如,引发异常console.log()或其他方法)执行getJSON的最简单方法是什么?


阅读 234

收藏
2020-07-27

共1个答案

一尘不染

您可以使用

        function name() {
            $.getJSON("", function(d) {
                alert("success");
            }).done(function(d) {
                alert("done");
            }).fail(function(d) {
                alert("error");
            }).always(function(d) {
                alert("complete");
            });
        }

如果要查看错误原因,请使用完整版本

function name() {
    $.getJSON("", function(d) {
        alert("success");
    }).fail( function(d, textStatus, error) {
        console.error("getJSON failed, status: " + textStatus + ", error: "+error)
    });
}

如果您的JSON格式不正确,则会看到类似

getJSON failed, status: parsererror, error: SyntaxError: JSON Parse error: Unrecognized token '/'

如果网址错误,您会看到类似

getJSON failed, status: error, error: Not Found

如果您试图从另一个域获取JSON,则违反Same-origin策略,则此方法将返回空消息。请注意,您可以通过使用JSONP(具有局限性)或跨域资源共享(CORS)的首选方法来解决同源策略。

2020-07-27