var myform = document.getElementById("myform");
var fd = new FormData(myform );
$.ajax({
url: "example.php",
data: fd,
cache: false,
processData: false,
contentType: false,
type: 'POST',
success: function (dataofconfirm) {
// do something with the result
}
});
8 回答
有一个函数正是这样做的:
http://api.jquery.com/serialize/
如果你想用post方法发送一个表单,那么serialize()不是一个好主意 . 例如,如果你想通过ajax传递一个文件,那就不行了 .
更好的解决方案是制作FormData并发送它:
通常在表单元素上使用
serialize()
.请注意,多个<select>选项在同一个密钥下序列化,例如
将导致查询字符串包含同一查询参数的多个出现:
这可能不是你想要的后端 .
我使用这个JS代码将多个参数减少为以逗号分隔的单个键(在John Resig所在地的线程中从评论者的响应中无耻地复制):
将上述内容变为:
在您的JS代码中,您可以这样称呼它:
希望有所帮助 .
使用
serialize( )
将表单序列化为查询字符串,可以在Ajax请求中将其发送到服务器 .
一个很好的jQuery选项是通过FormData . 通过表单发送文件时,此方法也适用!
你在jQuery中的send函数看起来像这样:
要向表单添加数据,您可以在表单中使用隐藏的输入,也可以动态添加:
你只需要发布数据 . 并使用jquery ajax函数设置参数 . 这是一个例子 .
其他解决方案对我不起作用 . 也许我正在处理的项目中的旧DOCTYPE阻止了HTML5选项 .
我的解决方案
JS: