我尝试在Spring MVC中对我的控制器进行AJAX查询。
我的动作代码是:
@RequestMapping(value = "events/add", method = RequestMethod.POST) public void addEvent(@RequestParam(value = "start_date") String start_date, @RequestParam(value = "end_date") String end_date, @RequestParam(value = "text") String text, @RequestParam(value = "userId") String userId){ //some code }
我的Ajax查询是:
$.ajax({ type: "POST", url:url, contentType: "application/json", data: { start_date: scheduler.getEvent(id).start_date, end_date: scheduler.getEvent(id).end_date, text: scheduler.getEvent(id).text, userId: userId }, success:function(result){ //here some code } });
但我得到一个错误:
必需的字符串参数’‘start_date不存在
为什么?据我所知,它像(@RequestParam(value = "start_date") String start_date
(@RequestParam(value = "start_date") String start_date
UDP 现在我给404我的班级接受数据
public class EventData { public String end_date; public String start_date; public String text; public String userId; //Getters and setters }
我的js AJAX调用是:
$.ajax({ type: "POST", url:url, contentType: "application/json", // data: eventData, processData: false, data: JSON.stringify({ "start_date": scheduler.getEventStartDate(id), "end_date": scheduler.getEventEndDate(id), "text": scheduler.getEventText(id), "userId": "1" }),
和控制器动作:
@RequestMapping(value = "events/add", method = RequestMethod.POST) public void addEvent(@RequestBody EventData eventData){ }
JSON数据是:
end_date: "2013-10-03T20:05:00.000Z" start_date: "2013-10-03T20:00:00.000Z" text: "gfsgsdgs" userId: "1"
在服务器端,您希望请求参数作为查询字符串,但在客户端,您将发送json对象。要绑定json,您将需要创建一个包含所有参数的类,并使用@RequestBody批注而不是@RequestParam。
@RequestMapping(value = "events/add", method = RequestMethod.POST) public void addEvent(@RequestBody CommandBean commandBean){ //some code }