我想知道如何使用jQuery LOAD函数为表单提交POST数据,发送表单的序列化数据。
所以,举例来说,我该怎么做:
$('someElement').click(function(){
var formData = $('formHere').serialize();
$('anotherElement').load('somePage', formData);
)};
目前,这不起作用 - 如果不发布数据,而是发送GET请求。我不想开始使用$ .post方法(因为我只是不想!),我在这里做错了吗?
解决方案:改为使用serialiazeArray - 如
var formData = $('formHere').serializeArray()
答案 0 :(得分:7)
轻松:使用serializeArray()
而不是serialize()
。
serialize()
返回一个字符串,而serializeArray()
返回一个对象。如果数据是对象,则load()
发送POST。如果数据是字符串,load()
会发送GET。
答案 1 :(得分:3)
根据jQuery docs for .load()
,如果数据(在这种情况下formData
是一个对象),似乎使用了POST方法。否则它使用GET。但是,docs for .serialize()
表示它返回一个字符串。因此总是GET。
答案 2 :(得分:0)
如果您必须有帖子,请使用$.post
,否则您需要使用$ .ajaxSettings配置全局ajax。 $.load
,$.get()
,$.getJSON()
& $.post
是$.ajax
的便捷包装,其中一些选项已经过处理,以尽量减少所需的代码。
$('someElement').click(function(){
var formData = $('formHere').serialize();
$.post('somePage', formData, function(data){
$(selector).html(data);
});
});
API包含$(form).serialize()
与$.post