Как передать объект 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;
}