Jquery 为AJAX序列化多页中的唯一表单。在FF/Safari中工作,但IE会序列化页面上的所有表单
我有一个类似项目的页面,每个项目都有自己的形式,我想使用Ajax进行更新。对于每个项目,我在表单id的末尾附加一个计数器,这样每个表单都有一个唯一的id。我还将这个“计数器id”作为属性存储在submit元素中,这样我就可以在JQuery中动态构建表单名称 它在FF win/mac和Safari mac中完美地工作。Serialize仅从唯一表单获取数据 但所有版本的IE似乎都在吐Jquery 为AJAX序列化多页中的唯一表单。在FF/Safari中工作,但IE会序列化页面上的所有表单,jquery,ajax,internet-explorer,serialization,forms,Jquery,Ajax,Internet Explorer,Serialization,Forms,我有一个类似项目的页面,每个项目都有自己的形式,我想使用Ajax进行更新。对于每个项目,我在表单id的末尾附加一个计数器,这样每个表单都有一个唯一的id。我还将这个“计数器id”作为属性存储在submit元素中,这样我就可以在JQuery中动态构建表单名称 它在FF win/mac和Safari mac中完美地工作。Serialize仅从唯一表单获取数据 但所有版本的IE似乎都在吐 对于页面上的第一个表单, serialize从中获取所有数据 页面上的每个表单 对于页面上的其他表单, 序列化返
- 对于页面上的第一个表单, serialize从中获取所有数据 页面上的每个表单
- 对于页面上的其他表单, 序列化返回无任何内容
<form id='ajax_multi_form0' action="http://tims-mac-pro.local:8888/configuration/store/node_update" method="post">
<input type="hidden" name="id" value="1" />
...
<input type="text" size='4'name="temperature_below_alert" value='5' /></td>
<input type="text" size='4' name="temperature_above_alert" value='26' /></td>
<input counter='0' class='ajax_multi_submit' type='submit' name="submit" value="Update This Node"
</form>
<form id='ajax_multi_form1' action="http://tims-mac-pro.local:8888/configuration/store/node_update" method="post">
<input type="hidden" name="id" value="2" />
<input type="text" size='4'name="temperature_below_alert" value='-10' /></td>
<input type="text" size='4' name="temperature_above_alert" value='7' /></td>
...
<input counter='1' class='ajax_multi_submit' type='submit' name="submit" value="Update This Node"
</form>
您缺少提交按钮上的收尾角括号,导致它误解了收尾后续收尾表单标记
能够在IE中复制,并在提交按钮的末尾添加“>”使问题消失…严重吗?我不该认为那是一个打字错误。哦,伟大的美洲驼-我真是个蠢驴。是的,你是对的,现在工作很好。谢谢,没问题。(起初我还以为这也是一个复制/粘贴问题。)
$('.ajax_multi_submit').click(function(event){
event.preventDefault();
// get the counter assigned to this form.
var element = $(this);
var counter = element.attr("counter");
var formUrl = $('#ajax_multi_form'+counter).attr('action');
$.ajax({
url: formUrl,
type: "POST",
dataType: "html",
data: $('#ajax_multi_form'+counter).serialize(),
beforeSend: function(){
showAjaxMultiBusy(counter);
},
complete: function(){
},
success: function(html){
processAjaxMultiForm(html, counter);
}
});
});