2013-12-18 18 views
6

Tôi muốn trả lại chuỗi từ Spring MVC Controller thành Ajax. Nó không hoạt động như mong muốn và đưa ra lỗi.Bộ điều khiển lò xo + Chuỗi trả về Ajax

mã Ajax của tôi cho điều này:

function ajaxRequest(item) { 

    $.ajax({ 
     type: "POST", 
     url: "/myPage", 
     data: { 
      item: item 
     }, 
     success: function (html) { 

      alert(html); 
     }, 
     error: function(e) { 
      console.log("Error:" + e); 
     } 
    }); 

} 

điều khiển của tôi:

@RequestMapping(value = "/myPage", method= RequestMethod.POST, produces="text/plain") 
public @ResponseBody String myController(HttpServletRequest request) { 
String myItem = request.getParameter("item"); 

... 

return myItem + "bla bla bla"; 
} 

Chrome console kết quả:

POST http://localhost:8080/myPage 406 (Not Acceptable) jquery.js 
Error:[object XMLHttpRequest] 

am i thiếu gì ở đây?

Trả lời

-1

Hãy chắc chắn rằng bạn có phụ thuộc Jackson. Spring MVC có thể dựa vào nó.

+0

Jackson không được tham gia ở đây. –

4

Tôi đã giải quyết nó. Chúng tôi có thể trả lại giá trị chính xác với người viết phản hồi.

@RequestMapping(value = "/myPage") 
    public void myController(HttpServletRequest request, HttpServletResponse response) throws IOException { 

    String myItem = request.getParameter("item"); 

    ... 

    response.getWriter().println(myItem + "bla bla bla"); 
    } 
5

Khi bạn quay lại một String từ một phương pháp xử lý chú thích với @ResponseBody, Spring sẽ sử dụng một StringHttpMessageConverter mà đặt sự trở lại content-type để text/plain. Tuy nhiên, yêu cầu của bạn không có tiêu đề Accept cho loại nội dung đó nên Máy chủ (ứng dụng Mùa xuân) của bạn cho rằng không thể chấp nhận trả lại text/plain.

Thay đổi ajax của bạn để thêm tiêu đề Accept cho text/plain.

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