2013-12-18 11 views
6

Ich möchte String von Spring MVC Controller bis Ajax zurückgeben. Es funktioniert nicht wie erwartet und gibt einen Fehler.Spring Controller + Ajax Return String

Meine Ajax-Codes für diese:

function ajaxRequest(item) { 

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

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

} 

Mein Controller:

@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 Konsolen Ergebnis: hier

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

Was bin ich?

Antwort

-1

Stellen Sie sicher, dass Sie Jackson-Abhängigkeit haben. Spring MVC kann sich darauf verlassen.

+0

Jackson ist hier nicht beteiligt. –

4

Ich habe es gelöst. Wir können korrekte Werte mit Antwortschreiber zurückgeben.

@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

Wenn Sie ein String von einer Handler-Methode zurückgeben mit @ResponseBody kommentierte, wird Frühling ein StringHttpMessageConverter verwenden, die die Rückkehr Content-Type auf text/plain setzt. Ihre Anfrage enthält jedoch keinen Header Accept für diesen Inhaltstyp, sodass der Server (Ihre Spring-App) es für nicht akzeptabel hält, text/plain zurückzugeben.

Ändern Sie Ihre Ajax, um die Accept Header für text/plain hinzuzufügen.