2016-07-09 8 views
1

Ich versuche, eine AJAX jQuery Anfrage an meine Spring MVC Servlet zu senden und habe ein paar Probleme. Ich lese schon einige Artikel, aber sie haben mir nicht helfen :( So habe ich diese ajax Anfrage:Gültige AJAX-Anfrage mit Spring MVC

  $.ajax({ 
       url   : "add_news", 
       type  : "POST", 
       dataType : 'json', 
       contentType : 'application/json', 
       mimeType : 'application/json', 
       data  : JSON.stringify({"category": categoryName, "name": newsName, "data": newsData}), 
       success  : function(data) { 
        $("#list_news").append(
          data.id + " : " + 
          data.name + " - " + 
          data.created + " ; " + 
          data.data + "<br>"); 
       } 
      }); 

Controller ist:

@RequestMapping (value = "/add_news", method = RequestMethod.POST) 
public @ResponseBody News addNews(@RequestParam String category, @RequestParam String name, @RequestParam String data) { 
    System.out.println("category " + category); 
    System.out.println("name " + name); 
    System.out.println("data " + data); 

    NewsCategoryDict c = new NewsCategoryDict(); 
    c.setId(66); 
    c.setName("misc"); 

    News response = new News(); 
    response.setCategory(c); 
    response.setId(60); 
    response.setName(name); 
    response.setData(data); 
    response.setCreated(new java.util.Date()); 

    return response; 
} 

Ich weiß nicht einmal-System raus - so meine Das erste Problem ist mit URL. "add_news" ist kein jsp - nur eine Logik, um einen Datensatz vom Server zu bekommen. Zweites Problem (wenn ich es richtig entziffern) in Eintrag Params. Ich muss @RequestBody verwenden, um Daten vom Client zu erhalten Java POJO und senden Sie diese POJO zurück mit einigen zusätzlichen Informationen, aber ich verstehe nicht, wie t o schreibe JSON Körper in AJAX.data Recht, um es gültig zu machen. Bitte helfen Sie mir.

BEARBEITEN Ok. Ich finde einen Moment. Wenn ich GET in $ .ajax verwende und RequestMethod.GET in der Controller-Handler-Methode setze - Methode wird aufgerufen (mit POST - keine Aktionen). Warum funktioniert POST nicht?

Antwort

0

entfernen JSON.stringify() von Post-Daten:

$.ajax({ 
    url   : "add_news", 
    type  : "POST", 
    dataType : 'json', 
    contentType : 'application/json', 
    mimeType : 'application/json', 
    data  : {"category": categoryName, "name": newsName, "data": newsData}, 
    success  : function(data) { 
     $("#list_news").append(
       data.id + " : " + 
       data.name + " - " + 
       data.created + " ; " + 
       data.data + "<br>"); 
    } 
}); 
+0

Dies bedeutet also, @RequestParam in meiner Methode, um wie AJAX.data sein wird? Und was ist mit URL - ich habe keine println in Controller? – R1K0

+0

Warum GET-Methode funktioniert und POST-Methode Controller nicht aufruft? – R1K0

+0

Wenn Sie 'GET' verwendet haben, verwenden Sie' JSON.stringify() '? – Blank