2013-11-27 17 views
15

pracuję nad SpringMVC, jestem przekazywanie danych z Ajax do kontrolera ale mam zerową wartość w moim kontrolera proszę sprawdzić mój kod poniżejJak przekazać obiekt Json z ajax do Spring Controller MVC?

function searchText() 
{ 
    var sendData = { 
    "pName" : "bhanu", 
    "lName" :"prasad" 
    } 
    $.ajax({ 
type: "POST", 
url: "/gDirecotry/ajax/searchUserProfiles.htm, 
    async: true, 
    data:sendData, 
    success :function(result) 
    { 
    } 
} 

MyControllerCode

  RequestMapping(value="/gDirecotry/ajax/searchUserProfiles.htm",method=RequestMethod.POST) 

     public @ResponseBody String getSearchUserProfiles(HttpServletRequest request) 
     { 
     String pName = request.getParameter("pName"); 
     //here I got null value 
     } 

ktoś mi pomóc

+0

co to jest '/ gDirecotry'? Czy znajduje się w folderze 'WEB-INF'? –

Odpowiedz

36

Hej cieszyć następujący kod.

JavaScript AJAX wywołanie

function searchText() { 
    var search = { 
     "pName" : "bhanu", 
     "lName" :"prasad" 
    } 
    $.ajax({ 
     type: "POST", 
     contentType : 'application/json; charset=utf-8', 
     dataType : 'json', 
     url: "/gDirecotry/ajax/searchUserProfiles.htm", 
     data: JSON.stringify(search), // Note it is important 
     success :function(result) { 
     // do what ever you want with data 
    } 
    }); 

}

Wiosna kod kontrolera

RequestMapping(value="/gDirecotry/ajax/searchUserProfiles.htm",method=RequestMethod.POST) 

    public @ResponseBody String getSearchUserProfiles(@RequestBody Search search, HttpServletRequest request) { 
     String pName = search.getPName(); 
     String lName = search.getLName(); 

     // your logic next 
    } 

Po klasa Search będzie następująca

class Search { 
    private String pName; 
    private String lName; 

    // getter and setters for above variables 
} 

Zaletą tej klasy jest to, że w przyszłości w razie potrzeby można dodać więcej zmiennych do tej klasy.
Np., jeśli chcesz zaimplementować funkcję sortowania.

+0

Mam problem: Http status 405, Metoda żądania Get not supported –

+0

@ H.Aqjn Powyższy przykład dotyczy żądania POST, nie można przekazywać danych postów w żądaniu GET. –

0

Mam nadzieję, że musisz dołączyć opcję dataType,

dataType: "JSON" 

I można uzyskać dane z formularza w sterowniku jak poniżej,

public @ResponseBody String getSearchUserProfiles(@RequestParam("pName") String pName ,HttpServletRequest request) 
     { 
     //here I got null value 
     } 
0

Jeśli uda ci się przejść całe json w parametrze ciąg jednym zapytaniu można użyć szablonu odpoczynek po stronie serwera do generowania obiektu z JSON, ale jeszcze jej nie optymalne podejście

4

Zastosowanie tej metody, jeśli nie chcesz tworzyć klasy, możesz bezpośrednio wysłać JSON bez Stringifying. Użyj domyślnego typu treści. Po prostu użyj @RequestParam zamiast @RequestBody. @RequestParam Nazwa musi być taka sama jak w json.

Ajax połączeń

function searchText() { 
    var search = { 
    "pName" : "bhanu", 
    "lName" :"prasad" 
    } 
    $.ajax({ 
    type: "POST", 
    /*contentType : 'application/json; charset=utf-8',*/ //use Default contentType 
    dataType : 'json', 
    url: "/gDirecotry/ajax/searchUserProfiles.htm", 
    data: search, // Note it is important without stringifying 
    success :function(result) { 
    // do what ever you want with data 
    } 
    }); 

Wiosna Controller

RequestMapping(value="/gDirecotry/ajax/searchUserProfiles.htm",method=RequestMethod.POST) 

    public @ResponseBody String getSearchUserProfiles(@RequestParam String pName, @RequestParam String lName) { 
     String pNameParameter = pName; 
     String lNameParameter = lName; 

     // your logic next 
    } 
-2
u take like this 
var name=$("name").val(); 
var email=$("email").val(); 

var obj = 'name='+name+'&email'+email; 
    $.ajax({ 
    url:"simple.form", 
    type:"GET", 
    data:obj, 
    contentType:"application/json", 
    success:function(response){ 
    alert(response); 
    }, 
    error:function(error){ 
    alert(error); 
    } 
}); 

wiosna Controller


@RequestMapping(value = "simple", method = RequestMethod.GET) 
public @ResponseBody 
    String emailcheck(@RequestParam("name") 
    String name,@RequestParam("email") 
    String email, HttpSession session) { 
    String meaaseg = "success"; 
return meaaseg ; 
} 
+0

GET z ciałem naprawdę? –

Powiązane problemy