【问题标题】:ASP.NET: How to convert all form data to xml, then send xml to server?ASP.NET:如何将所有表单数据转换为 xml,然后将 xml 发送到服务器?
【发布时间】:2016-06-08 17:47:42
【问题描述】:

我有一个像这样的标准 ASP Web 表单:

<asp:Content ID="Content8" ContentPlaceHolderID="MainContent" runat="server">
<fieldset>
    <asp:Label ID="lblFirstName" runat="server" Text="First Name:"></asp:Label>
    <asp:TextBox ID="tctFirstName" runat="server"></asp:TextBox>
    <asp:Label ID="lblLastName" runat="server" Text="Last Name:"></asp:Label>
    <asp:TextBox ID="txtLastName" runat="server"></asp:TextBox>
    <asp:Label ID="lblEmail" runat="server" Text="E-Mail:"></asp:Label>
    <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
    <asp:Label ID="lblPhone" runat="server" Text="Phone Number:"></asp:Label>
    <asp:TextBox ID="txtPhone" runat="server"></asp:TextBox>
    <asp:Button ID="btnSubmit" runat="server" Text="Submit" />
</fieldset>
</asp:Content>

我看到了一个帖子:How to post XML to server thru HTML form? 代码如下:

$("#myform").submit(function(){
  var formjson = $('#myform').serializeArray();
  var formxml = json2xml(formjson);
  $.post("/collect.php", { 'data': formxml }, function(data){ 
    // callback logic
  });
  return false;
});

'serializeArray()' 我得到的结果已经是空的。 所以我的问题是: 1. 这个 jQuery 代码如何使用 'ContentPlaceHolder' 而不是 'form'? 2. 这个 jQuery 代码是否适用于标准的 ASP 控件字段,还是必须是 HTML 字段? 例如:我用作文本输入,但 HTML 是: 提前致谢。

【问题讨论】:

    标签: jquery asp.net


    【解决方案1】:

    占位符实际上不是 html 标签 先改这个

    <fieldset id='myfieldset'>
    #bunch of tags
    </fieldset>
    

    $('#myform').serializeArray();
    

    用#myfieldset 替换#myform 您也可以将#myform 替换为#Content8,但在字段集上执行此操作会减少混乱。

    【讨论】:

      【解决方案2】:

      谢谢保罗。 实际上我确实添加了一个带 id 的,然后用 'div id' 替换 'myform',但同样的事情。 serializaArray() 函数不返回任何内容。我假设这个函数只识别 html 属性,而不是 asp 控件属性。我对吗?为了使用这个功能,我需要先将所有的asp控件元素替换为html元素吗?如果是这种情况,如何替换asp:GridView?我确实对此控件进行了一些自定义。 还有其他想法吗?

      【讨论】:

        【解决方案3】:

        我不确定您是否可以将 ASP.NET ContentPlaceHolder 与 JQuery SerializeArray 一起使用。
        根据 SerializeArray 的 example,它应该是一个 JQuery 对象数组,例如 $(":input") 表示所有控件

        您必须检查底层 html 客户端代码,并查看 ContentPlaceHolder 转换为什么。 在我的测试中,使用您的代码,我看到了客户端 被转换为

        所以你应该使用 $(":input").serializeArray();

        从您的

        中恢复数据

        希望对你有帮助,

        【讨论】:

          【解决方案4】:

          我不确定您是否可以将 ASP.NET ContentPlaceHolder 与 JQuery SerializeArray 一起使用。
          根据 SerializeArray 的 example,它应该是一个 JQuery 对象数组,例如 $(":input") 表示所有控件

          您必须检查底层 html 客户端代码,并查看 ContentPlaceHolder 转换为什么。 在我的测试中,使用您的代码,我看到了客户端

          <asp:TextBox ID="tctFirstName" runat="server">
          

          转换为

          <input name="ctl00$MainContent$tctFirstName" type="text" id="MainContent_tctFirstName" />
          

          所以你应该使用

          $(":input").serializeArray();
          

          从您的&lt;asp:TextBox&gt;恢复数据
          我检查了我的系统,它在 SerializeArray() 上返回正确的数据

          希望对你有帮助,

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-02-24
            • 2011-07-03
            • 1970-01-01
            • 2018-01-05
            • 2020-08-01
            • 2012-12-29
            • 1970-01-01
            相关资源
            最近更新 更多