2008-10-29 16 views
7

Tengo un formulario que estoy enviando utilizando la función ajaxSubmit de jQuery del complemento Forms. Estoy intentando agregar un par de nombre/valor de formulario a los datos del formulario justo antes de que se produzca el envío. Mi plan es modificar los datos del formulario en el controlador de eventos beforeSubmit.Modificar los valores del formulario con beforeSubmit con jQuery ajaxSubmit?

Dada una función que se parece a:

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

¿Cómo agrego un par simple de FormData? Es una matriz en la forma de:

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

Gracias, Brian

Respuesta

16

Después de una hora de la experimentación, que cuenta de una solución. Para agregar un valor a los datos del formulario, el siguiente código funcionará.

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" }; 
} 

También puede modificar los datos si se conoce el índice del valor que desea cambiar, tales como:

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

espero que esto ayude a alguien más.

+0

Gracias ... me ayudó –

7

Esto está bien:

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

Por alguna razón, el cambio de los datos de la devolución de llamada beforeSubmit no funcionó para mí cuando me encontré con este problema.

Sin embargo, la asignación de un objeto a "datos" en las opciones de formulario provocó que este objeto se añadiera a los datos serializados. Esto no está documentado explícitamente en el sitio web de formularios de jquery, pero es parte del método $ .ajax subyacente.

1

formData [0] .value = 'new value'; funciona bien en AjaxSubmit(). Lo había implementado mientras cargaba el contenido del archivo dinámicamente. Antes después de tanto tiempo, envíe datos en blanco al servidor, por lo que este código puede ser útil antes de enviar su formulario.

Cuestiones relacionadas