Javascript 如何处理JSON错误消息
我是JavaScript和jQuery的完全初学者 当我查询API时,通常会得到如下JSON:Javascript 如何处理JSON错误消息,javascript,jquery,Javascript,Jquery,我是JavaScript和jQuery的完全初学者 当我查询API时,通常会得到如下JSON: { "soc": 9271, "series": [ { "year": 2013, "estpay": 370 }, { "year": 2012, "estpay": 430 } ] } { "error": "Some message here . . . .." } 但是,如果我的查询无效,我将
{
"soc": 9271,
"series": [
{
"year": 2013,
"estpay": 370
},
{
"year": 2012,
"estpay": 430
}
]
}
{
"error": "Some message here . . . .."
}
但是,如果我的查询无效,我将得到如下JSON:
{
"soc": 9271,
"series": [
{
"year": 2013,
"estpay": 370
},
{
"year": 2012,
"estpay": 430
}
]
}
{
"error": "Some message here . . . .."
}
所以我的问题是-检测错误消息然后设置IF/ELSE类型响应的语法是什么?i、 e.如果出现错误消息,请执行此操作。。如果没有错误消息,请执行其他操作。您可以尝试使用内置此方法的已实现JSON工具 其次,您可以尝试使用以下方法:
if (response){
try{
a=JSON.parse(response);
}catch(e){
alert(e); //error in the above string(in this case,yes)!
}
}
祝你好运 首先检查是否有错误
var o = JSON.parse(response);
if('error' in o){
// error in response
}
// assume response is received as string
var data = JSON.parse(response)
...
if (data.error) {
// handle error
console.log(data.error);
return;
}
// handle code normally
...
假设JSON对象存储在变量
result
中
您可以尝试以下方法:
var result = JSON.parse(myQuery()); // myQuery() is the function that executes your query
if (result.error) {
alert("Error message here !");
} else {
alert("Hallelujah !");
}
检查您的响应数据中是否有“错误”密钥目前可以完成这项工作,但为了使您的API符合REST协议,并且更具可伸缩性/动态性,我将基于HTTP状态代码和消息来处理错误。您可以参考此列表,查看什么是有效响应以及每个状态代码的含义
下面是一个关于如何在jQuery中处理状态代码的简短示例:
$.ajax({
statusCode: {
500: function(xhr) {
if(window.console) console.log(xhr.responseText);
}
}
});
此外,您还应该解析JSON以查看它是否有效,就像Ido Michael建议的那样,这可能是一个很好的结构
try {
data = JSON.parse(response);
} catch(e) {
data = false;
}
if(!data || data.error) {
// handel error
} else {
// data is good
}
谢谢你的快速回复。我一直在努力实施你的建议,但由于初学者的无知,我没有成功。我在下面列出了一个我正在使用的代码示例 我只需要检查$.get中的JSON是否有“error”这个词 如果出现“error”,那么我需要var nipay包含“notavailable”之类的内容 否则var nipay=maxBy(“年”,data.series).estpay
$.get(“http://my_api_url",
功能(数据){
var nipay=maxBy(“年”,数据系列);
$(“#box1”).html(“NI:+nipay+”英镑/周”)
});