我有一个简单的AJAX调用,服务器将返回一个包含有用数据的JSON字符串,或者返回一个由PHP函数mysql_error()生成的错误消息字符串。如何测试此数据是JSON字符串还是错误消息。
使用一个名为isJSON的函数会很好,就像您可以使用函数instanceof来测试某个东西是否是一个数组一样。
这就是我想要的:
if (isJSON(data)){
//do some data stuff
}else{
//report the error
alert(data);
}发布于 2012-03-21 20:42:27
使用JSON.parse
function isJson(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}发布于 2015-10-27 21:56:03
此代码为JSON.parse(1234)、JSON.parse(0)、JSON.parse(false)或JSON.parse(null),所有这些都将返回true。
function isJson(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}所以我用这种方式重写了代码:
function isJson(item) {
item = typeof item !== "string"
? JSON.stringify(item)
: item;
try {
item = JSON.parse(item);
} catch (e) {
return false;
}
if (typeof item === "object" && item !== null) {
return true;
}
return false;
}测试结果:
isJson test result
发布于 2012-03-21 20:43:03
如果服务器使用JSON进行响应,那么它将使用application/json内容类型,如果它使用纯文本消息进行响应,那么它应该使用text/plain内容类型。确保服务器使用正确的content-type进行响应,并进行测试。
https://stackoverflow.com/questions/9804777
复制相似问题