2016-03-31 33 views
5

Jestem kompletnym początkującym z JavaScript i jQuery.Jak przetwarzać komunikat o błędzie JSON

Kiedy zapytać mojego API będę normalnie JSON tak:

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

Jednakże jeśli zapytanie jest nieważny dostanę JSON tak:

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

Więc moje pytanie brzmi - co to jest składnia do wykrycia komunikatu o błędzie, a następnie ustawić odpowiedź typu IF/ELSE? Oznacza to, że jeśli pojawi się komunikat o błędzie. Jeśli żaden komunikat błędu nie robi czegoś innego.

Odpowiedz

1

Możesz spróbować użyć zaimplementowanego narzędzia JSON, które ma wbudowane te metody.

drugie można spróbować to wykorzystać:

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

Powodzenia!

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

sprawdzić, czy jest pierwszy błąd

// 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

Załóżmy, że obiekt JSON jest przechowywany w zmiennej result.

Można spróbować czegoś takiego:

var result = JSON.parse(myQuery()); // myQuery() is the function that executes your query 
if (result.error) { 
    alert("Error message here !"); 
} else { 
    alert("Hallelujah !"); 
} 
0

Sprawdzanie czy istnieje klucz „error” w danych odpowiedzi będzie wykonać zadanie na teraz, ale przez wzgląd na dokonaniu API zgodny z protokołem REST i bardziej skalowalne/dynamiczne oparłbym obsługę błędów na kodzie statusu HTTP i komunikatach. Możesz odnieść się do tej listy, aby zobaczyć, co jest prawidłową odpowiedzią i co oznacza każdy kod statusu. https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

Oto krótki przykład, w jaki sposób poradzić sobie z kodu stanu w jQuery:

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

Dodatkowo, należy również analizować JSON, aby zobaczyć, czy jest on ważny, jak ido Michael zaproponował

0

ten może być dobrą strukturą

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

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

Dzięki za bardzo szybkie odpowiedzi. Próbowałem wprowadzić twoje sugestie, ale nie powiodło mi się z powodu ignorancji początkujących. Podałem przykład kodu, nad którym pracuję poniżej.

Po prostu potrzebuję JSON z $ .get do sprawdzenia pod kątem słowa "błąd".

Jeśli pojawi się "błąd", potrzebuję var nipay, aby zawierał coś w rodzaju "Niedostępny".

Inaczej var nipay = maxBy ("rok", 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>") 
}); 
Powiązane problemy