Ajax发送数据到控制器

我想知道这两种语法之间的区别是什么:

  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。

有人对此有解释吗?

这是我的 :

<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

}

回答:

的第一个变体中 ( ):

  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&param2=bob1&param3=mama。但在第二个示例中,查询字符串为:valueName=param1=bob&param2=bob1&param3=mama。这是无效的查询。这就是为什么属性为null的原因。

如果要发送一些参数,则必须使用另一种方法(无论参数是表单还是非表单):

var param1 = $("#id_of_needed_data").val();

var param2 = $("#id_of_needed_data").val();

// etc

$.ajax({

type: "post",

url: "testMethod",

data: "param1="+param1+"&param2="+param2; // etc

});

首先,我认为发送表单字段+一些额外的东西不是一个好主意。我认为最好将这些额外的参数作为隐藏字段添加到表单中。无论如何,如果您要发送一些非格式+格式参数,请尝试以下代码:

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+"&param2="+param2;

$.ajax({

type: "post",

url: "testMethod",

data: ; query;

});

以上是 Ajax发送数据到控制器 的全部内容, 来源链接: utcz.com/qa/408100.html

回到顶部