$(this).serialize() – 如何添加一个值?
目前我有以下几点:
$.ajax({ type: 'POST', url: this.action, data: $(this).serialize(), }); 这工作正常,但是我想给数据添加一个值,所以我试了一下
 $.ajax({ type: 'POST', url: this.action, data: $(this).serialize() + '&=NonFormValue' + NonFormValue, }); 
但是这并没有正确发布。 关于如何添加一个项目到序列化string的任何想法? 这是一个全局的页面variables,不是特定于表单的。
代替
  data: $(this).serialize() + '&=NonFormValue' + NonFormValue, 
你可能想要
  data: $(this).serialize() + '&NonFormValue=' + NonFormValue, 
 如果可能包含任何特殊字符,则应该小心对NonFormValue的值进行URL编码。 
 虽然马特b的答案将工作,您也可以使用.serializeArray()从表单数据获取数组,修改它,并使用jQuery.param()将其转换为URL编码的forms。 这样,jQuery为您处理额外数据的序列化。 
 var data = $(this).serializeArray(); // convert form to array data.push({name: "NonFormValue", value: NonFormValue}); $.ajax({ type: 'POST', url: this.action, data: $.param(data), }); 
先添加项目,然后序列化:
 $.ajax({ type: 'POST', url: this.action, data: $.extend($(this), {'NonFormValue': NonFormValue}).serialize() }); 
首先不应该
 data: $(this).serialize() + '&=NonFormValue' + NonFormValue, 
是
 data: $(this).serialize() + '&NonFormValue=' + NonFormValue, 
其次你可以使用
 url: this.action + '?NonFormValue=' + NonFormValue, 
或者如果该操作已经包含任何参数
 url: this.action + '&NonFormValue=' + NonFormValue, 
不要忘记你可以随时做到:
 <input type="hidden" name="NonFormName" value="NonFormValue" /> 
在你的实际forms,这可能会更好的代码取决于案件。
你可以编写一个额外的函数来处理表单数据,你应该在表单中添加你的非forms数据作为数据值。例如:
 <form method="POST" id="add-form"> <div class="form-group required "> <label for="key">Enter key</label> <input type="text" name="key" id="key" data-nonformdata="hai"/> </div> <div class="form-group required "> <label for="name">Ente Name</label> <input type="text" name="name" id="name" data-nonformdata="hello"/> </div> <input type="submit" id="add-formdata-btn" value="submit"> </form> 
然后添加这个jQuery的表单处理
 <script> $(document).onready(function(){ $('#add-form').submit(function(event){ event.preventDefault(); var formData = $("form").serializeArray(); formData = processFormData(formData); // write further code here----> }); }); processFormData(formData) { var data = formData; data.forEach(function(object){ $('#add-form input').each(function(){ if(this.name == object.name){ var nonformData = $(this).data("nonformdata"); formData.push({name:this.name,value:nonformData}); } }); }); return formData; }