Как передать объект Json из ajax в контроллер весны mvc?

Я работаю над SpringMVC, я передаю данные с ajax на контроллер, но я получил нулевое значение в моем контроллере, пожалуйста, проверьте мой код ниже

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
       }

кто-нибудь мне помогает

Ответ 1

Привет, наслаждайтесь следующим кодом.

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.html",
       data: JSON.stringify(search), // Note it is important
       success :function(result) {
       // do what ever you want with data
       }
   });
}

Код контроллера Spring

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
}

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

Ответ 2

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

Ajax Call

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

Весенний контроллер

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
   }

Ответ 3

Надеюсь, вам нужно включить параметр dataType,

dataType: "JSON"

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

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

Ответ 4

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

Ответ 5

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