我的Web应用程序基于Spring MVC(4.0.5)。 我尝试使用jQuery(v.2.1.1)通过AJAX发送POST请求:
function deleteItem(id) {
alert("Deleting " + id);
$.ajax({
url: "ajax/delete_item",
type: 'POST',
dataType: 'html',
data: {"id": id},
contentType: 'application/json',
mimeType: 'application/json',
success: function(data) {
var txt = data;
$('#message').html(txt);
},
error: function(data, status, err) {
$('#message').html(err);
}
});
}
成功调用Controller的方法,但请求中没有参数:
@RequestMapping(value = "/ajax/delete_item", method = RequestMethod.POST)
public @ResponseBody String ajaxDelete(HttpServletRequest request) {
Enumeration<String> en = request.getParameterNames();
while (en.hasMoreElements()) {
String pname = en.nextElement();
System.out.println("//// " + pname); // just for test
}
String idStr = request.getParameter("id");
Integer id = Integer.parseInt(idStr);
//...
为什么请求参数丢失?不仅仅是值,参数本身也会丢失。 这里有什么问题?
答案 0 :(得分:0)
如果您从 ajax 传递内容类型contentType: 'application/json'
,请在Spring方法声明中添加该设置,如下所示:(在定义中添加produces = "application/json"
)
@RequestMapping(value = "/ajax/delete_item", method = RequestMethod.POST , produces = "application/json")
public @ResponseBody String ajaxDelete(HttpServletRequest request) {
还有一点需要注意,
您提到的是数据类型和mimeType ,但它并不统一。
mimeType: 'application/json'
应使用dataType: 'json'
而非 html 编写。
答案 1 :(得分:0)
我不是100%确定你的解决方案有什么问题,但我可以给你一个适合我的例子
使用Jquery的AJAX请求:
// Do AJAX
$(function () {
$.post(mobileUrl + "/leave/requestLeave",
{ startDate: startDate, endDate: endDate, leaveTypeId: leaveTypeId,
notes: notes, isStartDayHalfDay: isStartDayHalfDay, isHalfDayEndDay: isHalfDayEndDay },
function (response) {
$('#feedbackTextArea').show();
}
);
});
控制器方法
@RequestMapping(value = "/requestLeave", method = RequestMethod.POST)
@ResponseBody
public String createOrUpdateNewForm(String startDate, String endDate, String leaveTypeText, String leaveTypeId,
String notes, String isStartDayHalfDay, String isHalfDayEndDay) {
startDate = new DateTime(startDate).toDate() etc
}
}
要记住的一件事是ajax请求中的参数名称应该与控制器方法实现中的变量名称相匹配
答案 2 :(得分:-1)
$("#drpop").change(function () {
var code = $(this).val();
$.ajax({
url: '/Ordering/OrderingTable',
type: 'post',
datatype: 'json',
data: { OperCode: code },
success:function(msg){
alert(msg);
} }); });
[HttpPost]
public ActionResult OrderingTable(string OperCode)
{
Orderingbll order = new Orderingbll();
var result = order.ListCategory(OperCode);//here you write your code
return Json(result,JsonRequestBehavior.AllowGet);
}