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=,但它显示为当前页面的参数,而不是 load() 函数中标识的页面,drawer.php

编辑:即使我serializeArray()用来确保将对象作为第二个参数传递给 load() 而不是字符串,我仍然发现调用了 GET 请求,并且当前页面的 URL 获得了这些参数。“drawer.php”的响应没有出现在 div 中。

第二次编辑:事实证明我未能拦截表单的操作,因为我没有return false;在提交函数的末尾包含这一行:

4

3 回答 3

1

我未能拦截表单的操作,因为我没有return false;在提交函数的末尾包含这一行:包括这条线解决了这个问题。

于 2012-08-03T01:03:15.537 回答
0

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

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

所以传递一个object/{}而不是string因为serialize()方法创建一个文本字符串,&并且你已经使用$data了而不是data

于 2012-08-02T23:38:34.657 回答
0

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

医生说:

.serialize() 方法以标准 URL 编码表示法创建文本字符串。

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

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

于 2012-08-02T23:39:07.190 回答