我有一个简单的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;
}
测试结果:
发布于 2012-03-21 20:43:03
如果服务器使用JSON进行响应,那么它将使用application/json
内容类型,如果它使用纯文本消息进行响应,那么它应该使用text/plain
内容类型。确保服务器使用正确的content-type进行响应,并进行测试。
https://stackoverflow.com/questions/9804777
复制相似问题