Javascript 如何处理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 . . . .." } 但是,如果我的查询无效,我将

我是JavaScript和jQuery的完全初学者

当我查询API时,通常会得到如下JSON:

{
  "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+”英镑/周

”) });