最近我遇到了一个问题,其中$ .post不发送关于被按下的按钮的信息。 也就是说我们有两个按钮的表单。
<form method="post" action="/home/index">
<input type='hidden' name='data1' value='value1' />
<button name="button1" type="submit">First</button>
<button name="button2" type="submit">Second</button>
</form>
$(document).ready(function() {
$('#formId').submit(function() {
var f = $(this);
var action = f.attr("action");
var serf = f.serialize();
$.post(action, serf,
//onreturn
function (data) {
//do something here on success
},
'json'
);
return false;
});
});
没有Ajax的形式发布,就好像用户按下第一个按钮如下:数据1 =值& Button1的
但是当我使用$。员额提交的表单不包含任何按键信息:数据1 =值1
的jQuery 1.6.1
行为取决于被压的按钮。 任何帮助或解决方法将appriciate!
我更专注于按钮,而不是他实际在做什么;)+1 – 2011-05-29 09:24:24
'encodeURIComponent'是做什么的? – Starx 2011-05-29 09:36:42
@Starx:表单通常会发送URI编码。 ['encodeURIComponent'](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURIComponent)正确地编码URI编码字符串的组成部分。例如,如果按钮的值为“发送表单”,则encodeURIComponent会返回“发送%20Form”,因为在URI编码中必须对空格进行编码。名称/值对的名称和值都必须进行编码,尽管您会看到很多人错过了对名称进行编码(如果您选择的编码没有被更改,通常会没问题)。 – 2011-05-29 09:43:53