2016-03-31 25 views
5

Tôi là người mới bắt đầu hoàn chỉnh với JavaScript và jQuery.Cách xử lý thông báo lỗi JSON

Khi tôi truy vấn API của tôi, tôi sẽ thường nhận được JSON như thế này:

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

Tuy nhiên nếu truy vấn của tôi là không hợp lệ tôi sẽ nhận được JSON như thế này:

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

Vì vậy, câu hỏi của tôi là - gì cú pháp để phát hiện thông báo lỗi là gì và sau đó thiết lập một kiểu phản ứng IF/ELSE? tức là Nếu thông báo lỗi thực hiện điều này .. Nếu không có thông báo lỗi làm điều gì khác.

Trả lời

1

Bạn có thể thử sử dụng công cụ JSON được triển khai có phương pháp này được tích hợp bên trong.

thứ hai bạn có thể thử và sử dụng này:

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

Chúc may mắn!

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

kiểm tra nếu có một lỗi đầu tiên

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

Giả sử rằng đối tượng JSON được lưu trữ trong biến result.

Bạn có thể thử một cái gì đó như thế này:

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

Kiểm tra nếu có một "lỗi" chủ chốt trong phản ứng dữ liệu của bạn sẽ làm công việc cho bây giờ nhưng vì lợi ích của làm API của bạn phù hợp với các giao thức REST của và khả năng mở rộng/năng động hơn, tôi sẽ căn cứ vào việc xử lý lỗi trên mã trạng thái HTTP và tin nhắn. Bạn có thể tự giới thiệu mình vào danh sách này để xem phản hồi hợp lệ là gì và ý nghĩa của từng mã trạng thái. https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

Dưới đây là một ví dụ ngắn về cách xử lý các mã trạng thái trong jQuery:

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

Bên cạnh đó, bạn cũng nên phân tích cú pháp JSON để xem nếu nó là hợp lệ, như Ido Michael đề nghị

0

này có thể là cấu trúc tốt

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

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

Cảm ơn câu trả lời rất nhanh. Tôi đã cố gắng thực hiện các đề xuất của bạn nhưng tôi không thành công do sự thiếu hiểu biết của người mới bắt đầu. Tôi đã đặt một ví dụ về mã mà tôi đang làm việc với bên dưới.

Tôi chỉ cần JSON từ $ .get để được chọn cho từ "lỗi".

Nếu "lỗi" xuất hiện thì tôi cần phải có tiền để chứa nội dung như "Không khả dụng".

Nếu không var nipay = maxBy ("Năm", 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>") 
}); 
Các vấn đề liên quan