2012-06-18 55 views
6

Trong cuộc gọi ajax của tôi nếu một lỗi được nhận tôi có một cảnh báo:Gọi lỗi jQuery ajax callback từ bên trong servlet

$.ajax({ 
     url: "myUrl",  
     type: 'POST', 
     dataType : "text", 
     data : ({ 
      json : myJson 
     }), 
     success : function(data) { 
       alert('success'); 
    }, 
    error : function() { 
       alert ('error'); 
    } 

Từ bên trong java là nó có thể gửi lại để gọi callback lỗi trong jquery nếu một ngoại lệ được ném. Vì vậy, một cái gì đó như:

try { 
     PrintWriter out = resourceResponse.getWriter(); 
     out.println("success"); 
     out.close(); 
    } catch (Exception e) { 
     PrintWriter out = resourceResponse.getWriter(); 
     out.println("error"); 
     out.close(); 
    } 

tức là thay vì in "lỗi" trên phản hồi, gọi lại 'lỗi' gọi lại trong mã jQuery.

Trả lời

4

Bạn phải đặt một số http status code của một số khác không phải là 200 để gọi hàm gọi lại lỗi trong jQuery Ajax. Bạn có thể đặt lỗi tạm dừng là 500 (which is for Internal Server Error) như

catch (Exception e) { 
    resourceResponse.setProperty(resourceResponse.HTTP_STATUS_CODE, "500"); 
    PrintWriter out = resourceResponse.getWriter(); 
    out.println("error"); 
    out.close(); 
} 

trong khối catch của bạn.

1

Sử dụng trang AJAX của bạn để trả về một đối tượng JSON với hai giá trị

  • dữ liệu thực tế
  • mã lỗi

Vì vậy, bạn có thể xử lý logic lỗi trong trang AJAX. Giải pháp này giải quyết các lỗi tùy chỉnh trong trang AJAX của bạn, lỗi trong cuộc gọi AJAX có thể được xử lý bằng mã hiện có của bạn.

2

Bạn có hai lựa chọn:

  1. Xử lý từng lỗi trong servlet và quấn chi tiết lỗi/thành công trong JSON Đáp lại, như đã được chỉ bởi Cranio
  2. Sử dụng HttpServletResponse để thiết lập mã trạng thái để http 500 (hoặc lỗi khác mã) và sau đó chỉ cần xử lý error gọi lại trong jQuery script
+0

Bạn có thể đăng phản hồi json mẫu có lỗi không? –

Các vấn đề liên quan