我有一个包含一些唯一输入字段的表单,还有一些具有重复名称的表单,如下所示:
<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传递字符串数组时复制相同的行为,就像执行标准表单帖子一样?
谢谢大家!
答案 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 (){}
}
)