如何通过$ .ajax(serialize()+ extra data)这样添加数据


69

我想在使用$('#myForm')。serialize()+额外数据后添加额外数据

$.ajax({
   type: 'POST',
   url: $('#myForm').attr('action'),
   data: $('#myForm').serialize(),   // I WANT TO ADD EXTRA DATA + SERIALIZE DATA
   success: function(data){
      alert(data);
      $('.tampil_vr').text(data);
   }
});

Answers:


163

什么样的数据?

data: $('#myForm').serialize() + "&moredata=" + morevalue

“数据”参数只是URL编码的字符串。您可以根据需要附加到它。在此处查看API 。


谢谢jthompson,它工作得很好...我看到$ .ajax手册没有serialize()(ajax中的新手)
Joko Wandiro 2010年

6
如果需要添加多个数据元素,则可以考虑使用...serialize()+'&'+$.param(myParametersObject){'param':'val','param2':'val2',...}
myParametersObject

serialize将对数据进行url编码,所以我更愿意让它完成工作:$('#myForm, #moredataid').serialize()
Andy G

9

就个人而言,我会将元素添加到表单中,而不是修改序列化的数据,例如

moredata = 'your custom data here';

// do what you like with the input
$input = $('<input type="text" name="moredata"/>').val(morevalue);

// append to the form
$('#myForm').append($input);

// then..
data: $('#myForm').serialize()

这样,您不必担心?&


1
您正在序列化表格,所以为什么会有这种情况?要么 &???除非您要序列化一个空表格,否则它将一直是&……<form id="someForm"></form>这反过来毫无意义
zgr024 2013年

为什么我必须首先处理呢?为什么不只是将元素添加到表单,然后对其进行序列化,比将字符串连接到序列化的表单更干净,因此开发人员只要为每个添加的字段缺少&或=,就可能会出错。
steadweb 2014年

3
然后,我建议您使用.serializeArray()数据并将其附加到数组中。它将以相同的方式发布。见stackoverflow.com/questions/14102732/...
zgr024

1
我同意。我只是不想将项目附加到序列化的字符串上,我宁愿让jQuery做艰苦的工作。
steadweb 2014年

3

您可以这样做:

postData[postData.length] = { name: "variable_name", value: variable_value };
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.