2013-11-27 18 views
15

ich auf SpringMVC arbeite, ich bin Gabe von Daten von Ajax-Controller, aber ich habe null-Wert in meinem Controller bitte meinen Code untenWie Json-Objekt von Ajax an Feder-MVC-Controller übergeben?

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

MyControllerCode überprüfen

  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 
     } 

jemand mir helfen

+0

Was ist das '/ gDirecotry'? Ist es unter "WEB-INF" Ordner? –

Antwort

36

Hey den folgenden Code genießen.

Javascript AJAX-Aufruf

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 
    } 
    }); 

}

Frühling Controller-Code

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 
    } 

folgenden Suchklasse wird wie folgt

class Search { 
    private String pName; 
    private String lName; 

    // getter and setters for above variables 
} 

Vorteil dieser Klasse ist, dass in Zukunft können Sie weitere Variablen zu dieser Klasse hinzufügen, wenn nötig.
Eg., wenn Sie die Sortierfunktion implementieren möchten.

+0

Ich habe ein Problem: HTTP-Status 405, Request-Methode Wird nicht unterstützt –

+0

@ H.Aqjn Das obige Beispiel ist der POST-Anfrage, Sie können keine Post-Daten in GET-Anfrage übergeben. –

0

ich hoffe, Sie müssen den Datentyp Option, um,

dataType: "JSON" 

Und man konnte die Formulardaten in der Steuerung als unten,

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

Wenn Sie es schaffen, Ihre ganze json in einem Query-String-Parameter zu übergeben, dann können Sie Rest-Vorlage auf der Server-Seite verwenden Objekt von json zu erzeugen, aber noch ist es nicht der optimale Ansatz

4

Verwenden Sie diese Methode, wenn Sie Sie möchten keine Klasse erstellen, die Sie JSON direkt ohne Stringifying senden können. Verwenden Sie den Standardinhaltstyp. Verwenden Sie einfach @RequestParam anstelle von @RequestBody. @RequestParam Der Name muss derselbe sein wie in json.

Ajax-Aufruf

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 
    } 
    }); 

Frühlings-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); 
    } 
}); 

Feder-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 mit Körper wirklich? –

Verwandte Themen