2016-03-31 139 views
5

我是一個JavaScript和jQuery的完整初學者。如何處理JSON錯誤消息

當我詢問我的API我通常會得到JSON這樣的:

{ 
    "soc": 9271, 
    "series": [ 
    { 
     "year": 2013, 
     "estpay": 370 
    }, 
    { 
     "year": 2012, 
     "estpay": 430 
    } 
    ] 
} 

但是,如果我的查詢是無效的,我會得到JSON這樣的:

{ 
    "error": "Some message here . . . .." 
} 

所以我的問題是 - 什麼是檢測錯誤消息的語法,然後設置IF/ELSE類型的響應?即如果錯誤消息這樣做。如果沒有錯誤消息做別的。

回答

1

您可以嘗試使用內置此方法的已實現的JSON工具。

其次,你可以嘗試使用此:

if (response){ 
    try{ 
     a=JSON.parse(response); 
    }catch(e){ 
     alert(e); //error in the above string(in this case,yes)! 
    } 
} 

祝你好運!

0
var o = JSON.parse(response); 
if('error' in o){ 
// error in response 
} 
1

檢查,如果有錯誤的第一

// assume response is received as string 
var data = JSON.parse(response) 
... 

if (data.error) { 
    // handle error 
    console.log(data.error); 
    return; 
} 

// handle code normally 
... 
0

讓我們假設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 !"); 
} 
0

檢查,如果有一個「錯誤」鍵,在響應數據將做的工作了,但現在,讓你的API符合REST協議的緣故和更具擴展性/動態性,我將基於HTTP狀態代碼和消息的錯誤處理。您可以參考這個列表來查看什麼是有效的響應以及每個狀態碼的含義。 https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

下面是關於如何處理jQuery中的狀態代碼一個簡單的例子:

$.ajax({ 
statusCode: { 
    500: function(xhr) { 
    if(window.console) console.log(xhr.responseText); 
    } 
} 
}); 

此外,您還應該解析JSON,看它是否是有效的,像伊邁克爾建議

0

這可能是一個好的結構

try { 
    data = JSON.parse(response); 
} catch(e) { 
    data = false; 
} 

if(!data || data.error) { 
    // handel error 
} else { 
    // data is good 
} 
-1

感謝您的快速回復。我一直在努力實施你的建議,但由於初學者無知,我沒有成功。我已經把我正在使用的代碼的一個例子放在下面。

我只需要$ .get中的JSON來檢查單詞「error」。

如果出現「錯誤」,那麼我需要var支付包含類似「不可用」的東西。

否則VAR nipay = maxBy( 「年」,data.series).estpay

$.get("http://my_api_url", 
function(data) { 

var nipay = maxBy("year", data.series).estpay ; 

$("#box1").html("<p><b>NI:</b> " + nipay + " GBP/week </p>") 
});