执行以下代码时,参数将显示在url中,表中的内部HTML不会更改。文档说明,当提供数据时,默认请求方法是POST。
$('form').submit(function() {
var data = $(this).serializeArray();
$('#items-table').load("drawer.php", data)
});
data
正确输出为MM=01&dd=01&yyyy=2001&HH=12&mm=00&ss=00&entername=Dr.+Clock&optionsRadios=option3&enteritemid=
,但它显示为当前页面的参数,而不是load()函数drawer.php
中标识的页面。
编辑:即使我使用serializeArray()
确保将对象作为第二个参数传递给load()而不是字符串,我仍然会发现调用了一个GET请求,并且当前页面的URL获得这些参数。来自" drawer.php"的响应没有出现在div中。
第二次编辑:原来我没有拦截表单的操作,因为我没有包含这一行:return false;
在结尾处提交功能。
答案 0 :(得分:1)
我没有拦截表单的操作,因为我没有在提交函数的末尾包含这一行:return false;
。包括这条线解决了这个问题。
答案 1 :(得分:0)
如果数据作为对象提供,则使用POST方法;除此以外, 假设GET。
$('#items-table').load("drawer.php", {form_data:data})
因此传递object/{}
代替string
,因为serialize()
方法创建了一个用&
设定的文字字符串,而且您还使用了$data
代替data
{1}}。
答案 2 :(得分:0)
您正在使用var data = $(this).serialize();
医生说:
.serialize()方法使用标准的URL编码表示法创建文本字符串。
http://api.jquery.com/serialize/
您需要提供一个对象作为加载的第二个参数才能使用POST。