2012-08-02 125 views
0

当下面的代码执行拦截默认行为,参数出现在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=,但它显示为参数到当前页面,而不是在负载()函数,drawer.php标识的页面。

编辑:即使我使用serializeArray(),以确保一个对象作为加载(第二个参数传递),而不是一个字符串,我还发现一个GET请求被调用,当前页面的URL涨势这些参数。 “drawer.php”的响应不会出现在div中。

SECOND EDIT:事实证明,我没有拦截表单的动作,因为我没有在提交函数的末尾包含这一行:return false;

+3

$数据或数据? – 2012-08-02 23:34:34

+0

你是从哪里读到的。我无法找到的文档中:http://api.jquery.com/load-event/ – Nope 2012-08-02 23:34:37

+1

@弗朗索瓦·瓦尔:错误的页面,看看这里http://api.jquery.com/load/ – 2012-08-02 23:37:03

回答

1

我未能拦截形式的行动,因为我没有加入这一行:return false;在提交功能的结束。包括这条线解决了这个问题。

0

如果数据被作为一个对象提供使用POST方法;否则,假设为 GET。

$('#items-table').load("drawer.php", {form_data:data}) 

所以传递一个object/{},而不是string因为serialize()方法创建& delimated文本字符串,你也用过$data代替data

0

您正在使用var data = $(this).serialize();

的医生说:

的.serialize()方法创建标准的URL编码符号的文本字符串。

http://api.jquery.com/serialize/

您需要提供一个对象作为负载使用POST的第二个参数。