关于ajax:jQuery:serialize()表单和其他参数

jQuery: serialize() form and other parameters

是否可以通过单个AJAX请求发送表单元素(使用.serialize()方法序列化)和其他参数?

例:

1
2
3
4
5
6
7
8
9
10
$.ajax({
    type : 'POST',
    url : 'url',
    data : {
        $('#form').serialize(),
        par1 : 1,
        par2 : '2',
        par3: 232
    }
}

如果不是,与其他参数一起提交表单的最佳方法是什么?

谢谢


serialize()有效地将表单值转换为有效的查询字符串,因此您只需将其附加到字符串即可:

1
2
3
4
5
$.ajax({
    type : 'POST',
    url : 'url',
    data : $('#form').serialize() +"&par1=1&par2=2&par3=232"
}


或者,如果将参数存储在某个对象变量中,则可以将form.serialize()$.param(object)结合使用。用法是:

1
var data = form.serialize() + '&' + $.param(object)

有关更多参考,请参见http://api.jquery.com/jQuery.param。


我不知道,但是以上都不对我有用,然后我用了它,它起作用了:

在表单的序列化数组中,将其存储为键值对

我们将新的一个或多个值推送到表单变量中,然后现在就可以直接传递此变量。

1
2
3
4
5
6
var form = $('form.sigPad').serializeArray();
var uniquekey = {
      name:"uniquekey",
      value: $('#UniqueKey').val()
};
form.push(uniquekey);

这样传递参数值

1
data : $('#form_id').serialize() +"&parameter1=value1&parameter2=value2"

等等。


如果您想使用表格序列化发送数据,则可以尝试此操作

1
2
3
4
5
6
7
8
9
10
11
var form= $("#formId");
$.ajax({
    type: form.attr('method'),
    url: form.attr('action'),
    data: form.serialize()+"&variable="+otherData,
    success: function (data) {
    var result=data;
    $('#result').attr("value",result);

    }
});

按照Rory McCrossan的回答,如果要发送整数数组(几乎是.NET),则代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
// ...

url:"MyUrl",       //  For example --> @Url.Action("Method","Controller")
method:"post",
traditional: true,  
data:
    $('#myForm').serialize() +
   "&param1="xxx" +
   "&param2="33" +
   "&" + $.param({ paramArray: ["1","2","3"]}, true)
,            

// ...

您也可以使用serializeArray函数执行相同的操作。


我用欠声明解决了这个问题;
使用相同的GET方法发送带有url的数据

1
2
3
4
$.ajax({
    url: 'includes/get_ajax_function.php?value=jack&id='+id,
    type: 'post',
    data: $('#b-info1').serializeArray(),

并使用$_REQUEST['value']$_GET['id']获得价值


您可以使用jQuery创建具有其他表单内容的辅助表单,然后在其他参数中添加该表单,因此您只需要在ajax调用中序列化即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function createInput(name,value){
    return $('<input>').attr({
        name: name,
        value: value
    });
}
$form = $("<form></form>");
$form.append($("#your_form input").clone());
$form.append(createInput('input_name', 'input_value'));
$form.append(createInput('input_name_2', 'input_value_2'));
....

$.ajax({
    type : 'POST',
    url : 'url',
    data : $form.serialize()
}