如何在进入服务器之前使用ajaxForm向表单添加隐藏字段
How to add a hidden field to a form with ajaxForm before it goes to the server
每当使用 JQuery 方法提交时,我都需要向表单添加一个隐藏字段及其相应值(用于 CSRF 保护):ajaxForm。但我刚刚熟悉前端,我正在努力为此想出正确的 javascript。有人做过吗?
您可以使用 beforeSerialize 钩子在 DOM 中注入隐藏字段,如下所示:
<form id="myForm" action="/myActionUrl" method="post">
<input type="text" name="myTextBox" value="test" />
<input id="submitBtn" type="button" onclick="submitThis(this)" value="Submit">
</form>
function submitThis(btnSubmit) {
$('#' + btnSubmit.form.id).ajaxSubmit({
dataType: 'json',
beforeSubmit: onBeforeSubmit,
beforeSerialize: onBeforeSerialize
});
return true;
}
function onBeforeSerialize($form, options) {
if($('input:hidden[name=myHiddenField]').length == 0) {
$('<input />').attr('type', 'hidden')
.attr('name', "myHiddenField")
.attr('value', "val")
.appendTo('#myForm');
}
}
function onBeforeSubmit(formData, jqForm, options) {
var queryString = $.param(formData);
alert('Querystring: \n' + queryString + '\n');
return true;
}
每当使用 JQuery 方法提交时,我都需要向表单添加一个隐藏字段及其相应值(用于 CSRF 保护):ajaxForm。但我刚刚熟悉前端,我正在努力为此想出正确的 javascript。有人做过吗?
您可以使用 beforeSerialize 钩子在 DOM 中注入隐藏字段,如下所示:
<form id="myForm" action="/myActionUrl" method="post">
<input type="text" name="myTextBox" value="test" />
<input id="submitBtn" type="button" onclick="submitThis(this)" value="Submit">
</form>
function submitThis(btnSubmit) {
$('#' + btnSubmit.form.id).ajaxSubmit({
dataType: 'json',
beforeSubmit: onBeforeSubmit,
beforeSerialize: onBeforeSerialize
});
return true;
}
function onBeforeSerialize($form, options) {
if($('input:hidden[name=myHiddenField]').length == 0) {
$('<input />').attr('type', 'hidden')
.attr('name', "myHiddenField")
.attr('value', "val")
.appendTo('#myForm');
}
}
function onBeforeSubmit(formData, jqForm, options) {
var queryString = $.param(formData);
alert('Querystring: \n' + queryString + '\n');
return true;
}