我必须将员工列表从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序列化和反序列化.
也可以看看: