是否可以使用单个AJAX请求发送表单元素(使用.serialize()
方法序列化)和其他参数?
示例:
$.ajax({
type : 'POST',
url : 'url',
data : {
$('#form').serialize(),
par1 : 1,
par2 : '2',
par3: 232
}
}
如果不是什么是提交表格和其他参数的最佳方式?
由于
答案 0 :(得分:205)
serialize()
有效地将表单值转换为有效的查询字符串,因此您只需附加到字符串:
$.ajax({
type : 'POST',
url : 'url',
data : $('#form').serialize() + "&par1=1&par2=2&par3=232"
}
答案 1 :(得分:68)
或者,如果将params存储在某个对象变量中,则可以将form.serialize()
与$.param(object)
一起使用。用法是:
var data = form.serialize() + '&' + $.param(object)
有关详细信息,请参阅http://api.jquery.com/jQuery.param。
答案 2 :(得分:0)
你可以使用jQuery创建一个辅助表单和另一个表单的内容,然后将其添加到其他参数中,这样你只需要在ajax调用中序列化它。
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()
}
答案 3 :(得分:0)
如果您要发送带有序列化表格的数据,则可以尝试
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);
}
});
答案 4 :(得分:0)
您也可以使用serializeArray函数执行相同的操作。
答案 5 :(得分:0)
通过这样的参数值
data : $('#form_id').serialize() + "¶meter1=value1¶meter2=value2"
以此类推。
答案 6 :(得分:0)
在 Rory McCrossan 答案之后,如果要发送整数的数组(几乎是.NET),则代码如下:
// ...
url: "MyUrl", // For example --> @Url.Action("Method", "Controller")
method: "post",
traditional: true,
data:
$('#myForm').serialize() +
"¶m1="xxx" +
"¶m2="33" +
"&" + $.param({ paramArray: ["1","2","3"]}, true)
,
// ...
答案 7 :(得分:-2)
我用under语句解决了这个问题; 使用url发送数据与GET方法相同
$.ajax({
url: 'includes/get_ajax_function.php?value=jack&id='+id,
type: 'post',
data: $('#b-info1').serializeArray(),
并使用$_REQUEST['value']
或$_GET['id']