通过jQuery发布数组

时间:2012-06-02 18:23:18

标签: jquery ajax arrays post

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

<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'会向目标发送一个字符串数组。这就是我要的。我将标题和内容值存储到表中,并将名称/电子邮件组合保存为不同表中的行。

如果我以标准方式发布此表单(只需在表单标记中指定'action'参数),那么这些值将被发送到ASP.NET页面,并且可以作为字符串和字符串数组处理,理论上它们可以很容易地插入到数据库中。

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

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

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

有没有人知道如何通过jQuery AJAX传递字符串数组时复制相同的行为,就像执行标准表单帖子一样?

谢谢大家!

4 个答案:

答案 0 :(得分:5)

您可以像这样使用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());

答案 1 :(得分:1)

$.ajax({

  url: "form.aspx", 
  data: $("form").serialize(),
  contentType: "application/json; charset=utf-8",
  dataType: 'json',
  method: 'POST',
  success: function() {

  }
});

了解.serialize().ajax()。您还可以选择.serializeArray()

简而言之,你可以使用$.post()

答案 2 :(得分:0)

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

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

详细了解$.post

答案 3 :(得分:0)

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

   var myarray=array();
   myarray[]='mytestvaliye1';
   myarray[]='mytestvaliye2';
   myarray[]='mytestvaliye3';

   $.ajax( {
   url :  'myrurl',
   data : myarray, 
   success: function (){}
   }

   )