我编写代码以使用Ajax将数据从javascript发送到Spring MVC Controller。
由于在客户端控制台中打印了“成功”消息,因此我的Ajax代码似乎工作正常,因此我假设执行了POST。但是,我的控制器似乎没有被调用,因为它的消息从未打印到服务器控制台。
我的Ajax代码:
<script>
$(document).ready(function () {
$("#submit-btn-2").on("click", function () {
var idList = [];
$(".vm-row").has(":checkbox:checked").each(function() {
idList.push($(this).attr('id'));
});
$.ajax({
type: "POST",
url: 'submitVendors',
data: {idList:idList},
success: function(id) {
console.log("SUCCESS: ", idList);
},
error : function(e) {
console.log("ERROR: ", e);
},
done : function(e) {
console.log("DONE")
}
})
});
});
</script>
单击关联的按钮会使此消息打印到客户端控制台:
SUCCESS: Array(3)
我的控制器:
@RequestMapping(value="/submitVendors", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody
String submitVendors(@RequestParam("idList[]") String[] idList, HttpServletRequest request) {
String vid = request.getSession().getAttribute("vid").toString();
System.out.println("Inside submitVendors service.");
for (String id : idList)
{
System.out.println("It actually worked: " + id);
}
return "vendormanagement";
}
服务器控制台不会打印任何类型的错误,消息也不会。
答案 0 :(得分:2)
尝试一下:
data: JSON.stringify(idList),
和
(@RequestBody String[] idList)
或者这个:
data: {"idList":idList.toString()},
和
(@RequestParam(value = "idList") List<String> idList)
答案 1 :(得分:0)
传递带有由ajax返回的变量名的RequestParam名称,
@RequestParam(value="idList") ArrayList<String> idList)
将以下属性添加/更改为ajax函数中的
dataType: 'json',
data:{idList : idList.toString()}