Jquery 为AJAX序列化多页中的唯一表单。在FF/Safari中工作,但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从中获取所有数据 页面上的每个表单 对于页面上的其他表单, 序列化返

我有一个类似项目的页面,每个项目都有自己的形式,我想使用Ajax进行更新。对于每个项目,我在表单id的末尾附加一个计数器,这样每个表单都有一个唯一的id。我还将这个“计数器id”作为属性存储在submit元素中,这样我就可以在JQuery中动态构建表单名称

它在FF win/mac和Safari mac中完美地工作。Serialize仅从唯一表单获取数据

但所有版本的IE似乎都在吐

  • 对于页面上的第一个表单, serialize从中获取所有数据 页面上的每个表单
  • 对于页面上的其他表单, 序列化返回无任何内容
如何让IE序列化正确的表单,并且只序列化该表单

在谷歌和stackoverflow搜索了3个小时后,我被卡住了。 以下是html表单的外观片段:

    <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);
            }
        }); 
});