jquery.load()来POST一个表单的所有元素,而不必指定POST的内容

时间:2012-02-16 20:12:18

标签: ajax jquery

我有一个现有的HTML表单,我正在尝试更新以使用jQuery.load()。如何将表单的所有元素作为POST参数传递,而不是必须指定要传递的参数?

表单元素是由脚本动态创建的,元素的数量以及元素的名称在很大程度上变化很大,以至于指定通过AJAX / POST传递哪些参数是不切实际的。是否有一种简单的方法可以将<form></form>标记中的所有元素传递给jQuery.load(),就像传统上提交表单一样?

2 个答案:

答案 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
    }
});

请参阅:http://api.jquery.com/jQuery.ajax/