我必须从控制器返回员工列表以响应jQuery AJAX请求。我应该怎么做?
我的控制器:
@RequestMapping("phcheck")
public ModelAndView pay(@RequestParam("empid") int empid, String fdate, String tdate) {
ModelAndView mav = new ModelAndView("phcheck");
List<Employee> employees = entityManager.createQuery(
"SELECT e FROM Employee e WHERE e.empId = " + empid, Employee.class)
.getResultList();
mav.addObject("employees", employees); // I need this list of employee in AJAX
return mav;
}
相关视图中的AJAX代码:
$(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
在spring,当你需要对象序列化,反序列化和消息转换时。在这种情况下,你需要使用@RequestBody
和注释控制器处理程序方法@ResponseBody
。
哪里:
@RequestMapping(value="phcheck", method=RequestMethod.GET
produces="application/json")
public @ResponseBody List<Employee> pay(@RequestParam("empid") int empid, String fdate, 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映射器或任何其他映射器应该在buildpath上可用,以便进行JSON序列化和反序列化。
但是,当我返回列表时,就像这段代码: 对于完全相同的API的列表返回类型的响应是正确的响应: [{“SellingPrice”:23000,“ID”:1,“Version”:1,“CreatedOn”:“25Feb 2019,05:53”,“LastUpdatedOn”:“25Feb 2019,05:53”}]
问题内容: 我正在做一个MVC应用程序,我需要从控制器传递json对象才能查看。 上面的代码是我在控制器中使用的,现在当我部署视图页面时,在浏览器中打开一个下载对话框,打开文件时,它会为我提供json对象作为我需要的格式。 现在我想返回我的视图页面,也想访问视图页面中的json对象。我怎样才能做到这一点。 问题答案: 在执行此操作时,您明确地告诉MVC 不要使用view 并提供序列化的JSON数据
问题内容: 我使用jquery发出ajax请求,这将调用以下spring控制器: 但是我收到以下错误: 如果需要,这里是我使用jQuery进行的ajax调用: 编辑 如果使用以下命令,则会出现相同的错误: 问题答案: 对于在家的观众…我发现问题是由于控制器中定义的方法签名与ajax调用不匹配。我从控制器方法中删除了参数。然后,我还意识到我还必须返回新的模型和视图。这是工作代码: 我更改为ajax调
因此,在这种情况下,我想配置Spring/Jackson返回{}(2字节)。 我已经考虑过在调用中返回new Object(),否则将返回void,但IMO这是一个肮脏的sout,必须有更好的东西。
我正在使用Spring形式。我只需要得到Staemap作为响应,但我得到的是整个jsp页面作为响应。
问题内容: 我有一个函数,用关键字声明一个变量。然后,它将启动AJAX请求以设置变量的值,然后从函数中返回此变量。 但是,我的实现失败了,我也不知道为什么。 这是代码的简化版本; 问题答案: AJAX请求是异步的。您的sendRuest函数正在执行,正在发出AJAX请求,但它是异步发生的;因此,sendRuest的其余部分在AJAX请求(和onreadystatechange处理程序)执行之前就已