我想知道这两种语法之间的区别是什么:
var value = $("#myForm").serialize();
$.ajax({
type: "post",
url: "testMethod",
data: value
});
和
var value = $("#myForm").serialize();
$.ajax({
type: "post",
url: "testMethod",
data: "valueName=" + value
});
我认为它们是相同的,但是当我使用第一个时,在我的spring控制器中,此属性具有完全填充的属性。当我使用第二种方法时,属性的所有属性都是null ??
有人对此有解释吗?
这是我的 JSP :
<form:form id="myForm" action="*" modelAttribute="filters" >
<form:input ... path="age" />
<form:input ... path="gender" />
<form:input ... path="location" />
</form:form>
这是JS
$('#ok_provinces_btn_id').click(function(){
var second = $('#secondAttr').val();
var f = $("#myForm").serialize();
$.ajax({
type: "post",
url: "testMethod",
data: ?????
});
});
这是我的控制器
@RequestMapping(value="testMethod", method=RequestMethod.POST)
public void testMethod(
@ModelAttribute("filters") FiltersWrapper filters,
@RquestParam String second
){
//Here the **second** param is OK
filters.getAge(); //NULL
}
答案 0 :(得分:4)
解释您使用代码获取null属性的原因在您的第一个变体中(它是正确的并且可以使用):
var value = $("#myForm").serialize();
$.ajax({
type: "post",
url: "testMethod",
data: value
});
您已将序列化表单编入value
变量。
在第二个版本中(它不正确且无法正常工作):
var value = $("#myForm").serialize();
$.ajax({
type: "post",
url: "testMethod",
data: "valueName=" + value
});
您将表单数据序列化为value
,之后在序列化查询之前添加了valueName=
。这根本不是正确的方法。
查询字符串必须是这样的,例如:param1=bob¶m2=bob1¶m3=mama
。但在您的第二个示例中,查询字符串为:valueName=param1=bob¶m2=bob1¶m3=mama
。这是无效的查询。这就是为什么属性为空。
在不序列化表单的情况下发送数据如果要发送一些参数,则必须使用其他方法(无论如何,params是form还是non-form):
var param1 = $("#id_of_needed_data").val();
var param2 = $("#id_of_needed_data").val();
// etc
$.ajax({
type: "post",
url: "testMethod",
data: "param1="+param1+"¶m2="+param2; // etc
});
发送表单数据+一些额外的参数第一,我不认为发送表单字段+一些额外内容是个好主意。我认为更好的是将这些额外的参数添加到您的表单作为隐藏字段。无论如何,如果你想发送一些非in-form + in-form参数,请尝试下一个代码:
var param1 = $("#id_of_needed_data").val();
var param2 = $("#id_of_needed_data").val();
// etc
var value = $("#myform").serialize();
var query = value;
if (value != '') {
query = query + "&";
}
query = query + "param1="+param1+"¶m2="+param2;
$.ajax({
type: "post",
url: "testMethod",
data: ; query;
});