【问题标题】:Post array via jQuery通过 jQuery 发布数组
【发布时间】:2012-06-02 18:23:18
【问题描述】:

我有一个表单,其中包含一些唯一的输入字段和一些具有重复名称的其他字段,如下所示:

<form method="post">
  Title: <input type="text" name="title" /><br />
  Content: <input type="text" name="content" /><br />
  Name: <input type="text" name="name" /><br />
  Email: <input type="text" name="email" /><br />
  Name: <input type="text" name="name" /><br />
  Email: <input type="text" name="email" /><br />
  Name: <input type="text" name="name" /><br />
  Email: <input type="text" name="email" />
</form>

所以 'title' 和 'content' 只是字符串值,但 'name' 和 'email' 发送一个字符串数组到目的地。这就是我要的。我会将标题和内容值存储到一个表中,并将名称/电子邮件组合保存为不同表中的行。

如果我以标准方式发布此表单(仅通过在表单标记中指定“操作”参数),则这些值将发送到 ASP.NET 页面并可以作为字符串和字符串数组处理,理论上它们可以很容易地插入到数据库中。

但是,应用程序不允许以传统方式提交表单。相反,我必须使用 jQuery AJAX 来发布表单。

问题是,如何使用 jQuery AJAX 复制传统表单发布的行为、维护数组值?

我知道可以序列化表单值,但是我需要做一些服务器端逻辑来反序列化并有效地创建数组,这是一个额外的步骤。

有没有人知道通过 jQuery AJAX 传递字符串数组时复制与执行标准表单发布时相同的行为的方法?

谢谢各位!

【问题讨论】:

    标签: jquery ajax arrays post


    【解决方案1】:

    你可以像这样使用jQuery的serialize()函数:

    <form method="post" id="testform">
      Title: <input type="text" name="title" /><br />
      Content: <input type="text" name="content" /><br />
      Name: <input type="text" name="name[]" /><br />
      Email: <input type="text" name="email[]" /><br />
      Name: <input type="text" name="name[]" /><br />
      Email: <input type="text" name="email[]" /><br />
      Name: <input type="text" name="name[]" /><br />
      Email: <input type="text" name="email[]" />
    </form>
    

    ...

    $.post("test.php", $("#testform").serialize());
    

    【讨论】:

    • 为什么要放[]
    • @FranciscoCorralesMorales:告诉 php 它是一个数组
    【解决方案2】:
    $.ajax({
    
      url: "form.aspx", 
      data: $("form").serialize(),
      contentType: "application/json; charset=utf-8",
      dataType: 'json',
      method: 'POST',
      success: function() {
    
      }
    });
    

    了解.serialize().ajax()。你也可以选择.serializeArray()

    总之你可以$.post()

    【讨论】:

      【解决方案3】:

      您可以使用 jQuery 的 $.serialize$.serializeArray 序列化表单字段以使用 ajax 发送它们,如下所示

      $.post('URL',$('form').serialize(),function(data){
           // success
      })
      

      阅读更多$.post

      【讨论】:

      【解决方案4】:

      你只需要在javascript中,你可以把你所有的数据放在数组和ajax数据发送数组中,在服务器端你可以爆炸

         var myarray=array();
         myarray[]='mytestvaliye1';
         myarray[]='mytestvaliye2';
         myarray[]='mytestvaliye3';
      
         $.ajax( {
         url :  'myrurl',
         data : myarray, 
         success: function (){}
         }
      
         )
      

      【讨论】:

        猜你喜欢
        • 2011-02-10
        • 1970-01-01
        • 2011-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-27
        • 1970-01-01
        • 2015-05-20
        相关资源
        最近更新 更多