一尘不染

Javascript:如何判断AJAX响应是否为JSON

ajax

我有一个AJAX请求,期望以JSON作为响应。

但是有可能返回的内容可能不是JSON,而是HTML错误页面(不幸的是,响应类型为200)。

如何确定响应是否为JSON?

(如果有帮助,我正在使用jQuery。但是我不能使用任何插件。)


阅读 330

收藏
2020-07-26

共1个答案

一尘不染

好吧,如果您使用的是jQuery并指定了dataType$.ajax()调用的属性,json那么jQuery将尝试解析JSON,如果不是,则JSON应该调用error()回调。

$.ajax({
    url: '/my/script.ext',
    dataType: 'json',
    success: function(data, textStatus, jqXHR) { /*YAYE!!*/ },
    error: function(jqXHR, textStatus, errorThrown) { /*AWWW... JSON parse error*/ }
});

编辑

对于不使用jQuery的任何人,基本思想是尝试将其解析为json并捕获错误:

var data = 'some_data';

try {
    data = JSON.parse(data);
} catch(e) {
    //JSON parse error, this is not json (or JSON isn't in your browser)
}

//act here on the the parsed object in `data` (so it was json).
2020-07-26