我有一个AJAX请求,期望以JSON作为响应。
但是有可能返回的内容可能不是JSON,而是HTML错误页面(不幸的是,响应类型为200)。
如何确定响应是否为JSON?
(如果有帮助,我正在使用jQuery。但是我不能使用任何插件。)
好吧,如果您使用的是jQuery并指定了dataType对$.ajax()调用的属性,json那么jQuery将尝试解析JSON,如果不是,则JSON应该调用error()回调。
dataType
$.ajax()
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).