当前位置: 首页 > 面试题库 >

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

冯淳
2023-03-14
问题内容

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

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

如何确定响应是否为JSON?

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


问题答案:

好吧,如果您使用的是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).


 类似资料:
  • 系统的日志需要登录和登出闭环,即有一个用户登录日志,就需要有一条登出日志。 如果用户通过登出按钮手动登出,触发登出接口是没问题的。 但是大多数用户,包括我自己都是直接点击x,关闭系统。 于是我监听了beforeunload事件,想在这里发登出请求。 现在遇到两个问题,一是:刷新也会触发这个事件。 二是:触发这个事件后的弹窗 重新加载是刷新弹出的,离开时关闭弹出的,我只想在点击离开的时候触发登出,重

  • cmf_is_wechat() 功能 判断是否为微信访问 参数 无 返回 boolean

  • cmf_is_mobile() 功能 判断是否为手机访问 参数 无 返回 boolean

  • 检查给定的参数是否是一个 symbol。 使用 typeof 来检查一个值是否为一个 symbol 。 const isSymbol = val => typeof val === 'symbol'; isSymbol(Symbol('x')); // true

  • 本文向大家介绍如何判断一个对象是否为空?相关面试题,主要包含被问及如何判断一个对象是否为空?时的应答技巧和注意事项,需要的朋友参考一下 可以使用 JSON.stringify() 方法判断 还有就是使用for in 遍历该对象 3.ES6 新增的方法 Object.keys(): Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组。 如果我们的对象为空,他会返回一个

  • 本文向大家介绍JavaScript中使用Object.prototype.toString判断是否为数组,包括了JavaScript中使用Object.prototype.toString判断是否为数组的使用技巧和注意事项,需要的朋友参考一下 为什么要用Object.prototype.toString而不是Function.prototype.toString或者其它?这是和他们的toStrin