2013-12-18 28 views
6

voglio tornare stringa da Spring MVC Controller a Ajax. Non funziona come previsto e genera un errore.controller Primavera + Ajax tornare stringa

miei codici Ajax per questo:

function ajaxRequest(item) { 

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

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

} 

mio 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 risultato console:

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

Che cosa mi manca qui?

risposta

-1

Assicurati di avere una dipendenza Jackson. Spring MVC può fare affidamento su di esso.

+0

Jackson non è coinvolto qui. –

4

L'ho risolto. Possiamo restituire valori corretti con lo scrittore di risposte.

@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

Quando ritorni un String da un metodo del gestore annotato con @ResponseBody, Primavera userà un StringHttpMessageConverter che imposta il tipo di contenuto ritorno alla text/plain. Tuttavia, la tua richiesta non ha un'intestazione Accept per quel tipo di contenuto, quindi il server (la tua app di Spring) ritiene inaccettabile restituire text/plain.

Modificare l'ajax per aggiungere l'intestazione Accept per text/plain.

Problemi correlati