我必须将员工列表从Controller返回到jQuery ajax.我该怎么做呢?
//controller part @RequestMapping("phcheck") public ModelAndView pay(@RequestParam("empid") int empid,String fdate,String tdate) { ModelAndView mav = new ModelAndView("phcheck"); List<Employee> emp=entityManager.createQuery("select e from Employee e where e.empId="+empid,Employee.class).getResultList(); mav.addObject("emp",emp); <----I need this list of employee in ajax return mav; }
视图中的Ajax
//Ajax part $(document).ready(function () { $("#empid").change(function () { if ($("#fdate").val() != "" && $("#tdate").val() != "" && $("#empid").val() != "") { jQuery.ajax({ url: "phcheck.htm?empid=" + $("#empid").val() + "&&fdate=" + $("#fdate").val() + "&&tdate=" + $("#tdate").val(),success: function (data) { alert(data + "success"); },error: function (data) { alert(data + "error"); } }); } else { alert("Please fill the from date and to date or select the employee id"); $("#empid .option").attr("selected","selected") } });
});
提前致谢.
解决方法
I need this list of employee in ajax
在春天,您需要对象序列化,反序列化和消息转换.在这种情况下,您需要使用@RequestBody和@ResponseBody注释控制器处理程序方法.
哪里:
> @ResponseBody:将告知spring尝试转换其返回值并自动将其写入http响应.
> @RequestBody:将告知spring尝试将传入请求主体的内容动态转换为参数对象.
在您的情况下,您需要JSON类型,您必须将@ResponseBody添加到您的方法签名或方法上方,并生成和使用可选的,如:
@RequestMapping(value="phcheck",method=RequestMethod.GET produces="application/json") public @ResponseBody List<Employee> pay(@RequestParam("empid") int empid,String tdate) { //get your employee list here return empList; }
并在AJAX调用中使用:
> contentType:’application / json’属性告诉您要发送的数据类型.和
> dataType:json属性告诉jquery将接收哪种内容类型的响应.
在你的情况下contentType:’application / json’不需要,默认一个,即’application / x-www-form-urlencoded; charset = UTF-8’就足够了.
并且您可以在AJAX成功中收到员工列表,迭代它就像:
success: function (data) { $.each(data,function(index,currEmp) { console.log(currEmp.name); //to print name of employee }); },
注意:构建路径上应该有Jackson mapper或任何其他映射器,以便进行JSON序列化和反序列化.
也可以看看: