使用jQuery ajaxSubmit使用beforeSubmit修改表单值?

时间:2008-10-29 15:38:28

标签: jquery jquery-forms-plugin

我有一个表单,我使用来自Forms插件的jQuery的ajaxSubmit函数提交。我正在尝试在提交之前向表单数据添加表单名称/值对。我的计划是修改beforeSubmit事件处理程序中的表单数据。

给定一个看起来像的函数:

function handleActionFormBeforeSubmit(formData, form, options) {
    // Add a name/value pair here somehow to formData
}

如何向formData添加简单对?它是以下形式的数组:

[ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]

谢谢, 布赖恩

4 个答案:

答案 0 :(得分:16)

经过一个小时的实验,我找到了解决方案。要将值附加到表单数据,以下代码将起作用。

function handleActionFormBeforeSubmit(formData, form, options) {

    // Add a name/value pair indicating this is an asynchronous call.
    // This works with the ASP.NET MVC framework's Request.IsMvcAjaxRequest() method.
    formData[formData.length] = { "name": "__MVCASYNCPOST", "value": "true" };
}

如果您知道要更改的值的索引,也可以修改数据,例如:

formData[0].value = 'new value';

我希望这有助于其他人。

答案 1 :(得分:7)

这很好:

formData.push({ "name": "__MVCASYNCPOST", "value": "true" });

答案 2 :(得分:1)

formData [0] .value ='新值&#39 ;;在AjaxSubmit()中正常工作。我在动态上传文件内容时实现了相同的功能。经过这么多次之后,表单会将空白数据发送到服务器,因此在提交表单之前,此代码有助于更改。

答案 3 :(得分:0)

由于某些原因,在遇到此问题时,更改beforeSubmit回调中的数据对我不起作用。

但是,在表单选项中将对象分配给“data”会导致将此对象附加到序列化数据。这没有在jquery表单网站上明确记录,但是是基础$ .ajax方法的一部分。