我有一个现有的HTML表单,我正在尝试更新以使用jQuery.load()。如何将表单的所有元素作为POST参数传递,而不是必须指定要传递的参数?
表单元素是由脚本动态创建的,元素的数量以及元素的名称在很大程度上变化很大,以至于指定通过AJAX / POST传递哪些参数是不切实际的。是否有一种简单的方法可以将<form></form>
标记中的所有元素传递给jQuery.load(),就像传统上提交表单一样?
答案 0 :(得分:27)
简单:收集表单数据并将其作为load()
的第二个参数后,请使用serializeArray(data)
,不要使用serialize(data)
,正如目前接受的答案所建议的那样。
serialize()
返回一个字符串,而serializeArray()
返回一个对象。
如果数据是对象,则load()
发送POST。如果数据是字符串,load()
会发送GET。
答案 1 :(得分:19)
您可以使用.serialize()
序列化表单的所有输入,以便与jQuery.load()调用一起提交。
$('form').serialize()
例如,使用jQuery.load()
(只有GET,除非你传递数据的对象,然后POST)
$.load(
'postTo.php',
$('#yourFormId').serialize(),
complete(responseText, textStatus, XMLHttpRequest){
//do your processing after the fact
}))
使用,jQuery.ajax()
,您可以将其设为POST
$.ajax({
'url': 'postTo.php',
'type': 'POST',
'data': $('#yourFormId').serialize(),
'success': function(result){
//process here
}
});