AJAX将数据发送到控制器发送到、控制器、数据、AJAX

由网友(嘿!借个火)分享简介:我想知道的是这两种语法之间的区别:VAR值= $(#myForm会)序列化()。$阿贾克斯({类型:后,网址:TestMethod的,数据:值});和VAR值= $(#myForm会)序列化()。$阿贾克斯({类型:后,网址:TestMethod的,数据:VALUENAME =+价值});我还以为他们是一样的,但是...

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

  VAR值= $(#myForm会)序列化()。
  $阿贾克斯({
    类型:后,
    网址:TestMethod的,
    数据:值
});
 

  VAR值= $(#myForm会)序列化()。
  $阿贾克斯({
    类型:后,
    网址:TestMethod的,
    数据:VALUENAME =+价值
});
 

我还以为他们是一样的,但是当我用的是第一个,在我的春天控制器这个属性已经完全填充的性能。当我用的是第二种方法,属性的所有属性都为空??

有人有解释吗?

如何使用SIM900A将传感器数据发送到网站

这是我的 JSP

 <形式:形式ID =myForm的行动=*的ModelAttribute =过滤器>

    <形式:输入...路径=年龄/>
    <形式:输入...路径=性别/>
    <形式:输入...路径=位置/>

< /形式:形式GT;
 

这是JS

  $('#ok_provinces_btn_id)。点击(函数(){
VAR秒= $('#secondAttr)VAL()。

变种F = $(#myForm会)序列化()。

$阿贾克斯({
    类型:后,
    网址:TestMethod的,
    数据: ?????
});
 

});

这是我的控制器

  @RequestMapping(值=TestMethod的,方法= RequestMethod.POST)
公共无效TestMethod的(
        @ModelAttribute(过滤器)FiltersWrapper过滤器,
                    @RquestParam字符串第二
        ){

             //这里** **第二个参数是确定
    filters.getAge(); //空值
}
 

解决方案

解释为什么你空的属性与你的code 在你的第一个变种(这是正确的,并会):

  VAR值= $(#myForm会)序列化()。
  $阿贾克斯({
    类型:后,
    网址:TestMethod的,
    数据:值
});
 

您已经有序列化形式为变量。

在第二个变种(这是不正确的,是行不通的):

  VAR值= $(#myForm会)序列化()。
  $阿贾克斯({
    类型:后,
    网址:TestMethod的,
    数据:VALUENAME =+价值
});
 

您的序列化表单数据为,之后加入 VALUENAME = 连载查询之前。这是不正确的做法的。

查询字符串必须是这样的,例如:参数1 =鲍勃和放大器;参数2 = bob1和放大器;参数3 =妈妈。但是,在你的第二个示例的查询字符串: VALUENAME =参数1 =鲍勃和放大器;参数2 = bob1和放大器;参数3 =妈妈。它是无效的查询。这就是为什么属性为null。

不序列化格式如果您想发送一些参数发送数据时,必须使用另一种方法(反正PARAMS是形式还是非格式):

  VAR参数1 = $(#id_of_needed_data)VAL();
。VAR参数2 = $(#id_of_needed_data)VAL();
// 等等
$阿贾克斯({
    类型:后,
    网址:TestMethod的,
    数据:参数1 =+参数1 +&放大器;参数2 =+ param2的; // 等等
});
 

发送表单数据+一些额外的PARAMS Firstyly,我不认为这是发送表单字段+一些额外的好主意。我觉得更好的是,这​​些额外的PARAMS添加到您的形式隐藏字段。无论如何,如果你想发送一些非状态正佳+状态正佳的参数尝试下code:

  VAR参数1 = $(#id_of_needed_data)VAL();
。VAR参数2 = $(#id_of_needed_data)VAL();
// 等等
。VAR值= $(#的MyForm)序列化();
VAR的查询=价值;
如果(值!=''){
    查询=查询+&放大器;;
}
查询=查询+参数1 =+参数1 +&放大器;参数2 =+ param2的;

$阿贾克斯({
    类型:后,
    网址:TestMethod的,
    数据: ;查询;
});
 

I'm was wondering what is the difference between these two syntaxes:

  var value = $("#myForm").serialize();
  $.ajax({
    type: "post",
    url: "testMethod",
    data: value
});

and

  var value = $("#myForm").serialize();
  $.ajax({
    type: "post",
    url: "testMethod",
    data: "valueName=" + value
});

I thought they are the same but when I use the first one, in my spring controller this attribute have fully populated properties. When I use the second approach, all the properties of the attribute are null ??

Someone have explanation for this?

This is my JSP:

<form:form id="myForm" action="*" modelAttribute="filters" >

    <form:input ...  path="age" />  
    <form:input ...  path="gender" />   
    <form:input ...  path="location" /> 

</form:form>

This is JS

$('#ok_provinces_btn_id').click(function(){
var second = $('#secondAttr').val();

var f = $("#myForm").serialize();

$.ajax({
    type: "post",
    url: "testMethod",
    data: ?????
});

});

This is my Controller

    @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
}

解决方案

Explaining why you get null attributes with your code In your first variant (it is correct and will work):

  var value = $("#myForm").serialize();
  $.ajax({
    type: "post",
    url: "testMethod",
    data: value
});

You already had serialized form into value variable.

In the second variant (it is incorrect and wouldn't work):

  var value = $("#myForm").serialize();
  $.ajax({
    type: "post",
    url: "testMethod",
    data: "valueName=" + value
});

You serialized form data into value and after that added valueName= before serialized query. It is not correct approach at all.

Query string must be such, for example: param1=bob&param2=bob1&param3=mama. But in your 2nd example query string is: valueName=param1=bob&param2=bob1&param3=mama. It is invalid query. Thats why properties are null.

Sending data without serializing form If you want to send some parameters, you have to use another approach (anyway params are form or 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+"&param2="+param2; // etc
});

Sending form data + some extra params Firstyly, I don't think it is good idea to send form fields + some extra. I think better is to add this extra params to your form as hidden fields. Anyway, if you want to send some non-in-form + in-form parameters try next code:

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;
});

阅读全文

相关推荐

最新文章