2013-11-27 5 views
15

Я работаю на SpringMVC, я передаю данные из Аякса контроллера, но я получил нулевое значение в мой контроллер, пожалуйста, проверьте мой код нижеКак передать объект Json из ajax в контроллер весеннего 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 
     } 

любой один помочь мне

+0

Что такое '/ gDirecotry'? Он находится под папкой «WEB-INF»? –

ответ

36

Эй наслаждаться следующим кодом.

Javascript AJAX вызова

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

}

Спринг код контроллера

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 
    } 

После класса Поиск будет следующим

class Search { 
    private String pName; 
    private String lName; 

    // getter and setters for above variables 
} 

Преимущество этого класса в том, что в будущем вы можете добавить к нему дополнительные переменные, если это необходимо.
Например., если вы хотите реализовать функцию сортировки.

+0

У меня проблема: статус Http 405, метод запроса Get not supported –

+0

@ H.Aqjn Приведенный выше пример запроса POST, вы не можете передавать данные post в запросе GET. –

0

Я надеюсь, что Вам нужно включить опцию DATATYPE,

dataType: "JSON" 

И вы могли бы получить данные формы в контроллере, как показано ниже,

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

Если вам удастся передать всю JSON в один параметр строки запроса, то вы можете использовать шаблон отдыха на стороне сервера для создания объекта из JSON, но до сих пор его не оптимальный подход

4

Используйте этот метод, если вы Не хотите создавать класс, вы можете напрямую отправлять JSON без Stringifying. Использовать тип содержимого по умолчанию. Просто используйте @RequestParam вместо @RequestBody. @RequestParam Название должно быть таким же, как в json.

Ajax вызова

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

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

пружина контроллер


@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 с телом действительно? –

Смежные вопросы