如何在进入服务器之前使用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;
}