Javascript 无法使用';在';操作员搜索';错误';无效
我不知道为什么会出现这个错误。它发生在json中的“错误”上Javascript 无法使用';在';操作员搜索';错误';无效,javascript,jquery,json,Javascript,Jquery,Json,我不知道为什么会出现这个错误。它发生在json中的“错误”上 TypeError: Cannot use 'in' operator to search for 'error' in null 因为$.parseJSON()返回null。如果您试图将json字符串转换为对象,请使用json.parse():由于jQuery的错误行为,null或未定义的,因此json变量为null: 在jQuery1.9之前,$.parseJSON返回null而不是抛出 如果传递给它的是空字符串、null或未定
TypeError: Cannot use 'in' operator to search for 'error' in null
因为
$.parseJSON()
返回null。如果您试图将json字符串转换为对象,请使用json.parse()
:由于jQuery
的错误行为,null
或未定义的,因此json
变量为null
:
在jQuery1.9之前,$.parseJSON返回null而不是抛出
如果传递给它的是空字符串、null或未定义,甚至
尽管这些都不是有效的JSON
在较新版本的jQuery
中,您的catch
块应该捕获异常,这是一种正确的行为。不要将$.parseJSON(数据)
用于该版本的jQuery
,请使用本机方法:
function parse(data, cb) {
try {
var json = $.parseJSON(data);
if ('error' in json) {
error(json.error);
return;
}
cb(json);
} catch(err) {
console.log(err);
error();
return;
}
}
如果要获取JSON,请使用$.getJSON(),以便它自动将JSON转换为JS对象。来自jQuery文档:
在jQuery 1.9之前,$.parseJSON
返回null,而不是在传递空字符串、null或未定义时抛出错误,即使这些字符串不是有效的JSON
从jQuery 3.0开始,$.parseJSON
已被弃用。要解析JSON对象,请改用原生的JSON.parse
方法
您可以使用本机JSON.parse并在必要时捕获任何问题(以便向用户显示错误):
您的try&catch
块应该捕获从try
块内的行抛出的任何错误。因此,如果JSON,parse
无法成功地将字符串转换为JSON,它将抛出一个错误,这将使此函数中断try
块并移动到catch
块
因此,您可以删除为检查错误而添加的,只需使用代码中已有的try&catch
,也可以使用JSON.parse(数据);
JSON.parse(data);
try {
var json = JSON.parse(data);
// you know the json was parsed successfully
//if you moved passed this line and didn't move
//the the catch block :-)
cb(json);
} catch (error) {
error(json.error);
return;
}