2013-12-18 12 views
6

Spring MVC Controller'dan Ajax numaralı dizgeye dönmek istiyorum. Beklendiği gibi çalışmıyor ve hata veriyor. Bunun içinYaylı Denetleyici + Ajax döndürme Dize

Benim Ajax kodları:

function ajaxRequest(item) { 

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

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

} 

My Denetleyici:

@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"; 
} 

Krom konsol sonucu:

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

burada eksik?

cevap

-1

Jackson'ın bağımlılığından emin olun. Bahar MVC buna dayanabilir.

+0

Jackson burada yer almıyor. –

4

Bunu çözdüm. Yanıt yazarı ile doğru değerleri döndürebiliriz. Eğer @ResponseBody ile açıklamalı bir işleyici yönteminden bir String döndüğünüzde

@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

, Bahar text/plain dönüş içerik türünü belirleyen bir StringHttpMessageConverter kullanacaktır. Ancak, isteğiniz, bu içerik türü için bir Accept başlığına sahip olmadığı için, Sunucu (sizin Spring uygulamanız), text/plain dönmek için kabul edilemez olduğunu düşünür.

text/plain için Accept başlığını eklemek üzere ajax'inizi değiştirin.