Tengo una forma simple con remote = true.
Este formulario está en realidad en un cuadro de diálogo HTML, que se cierra tan pronto como se hace clic en el botón Enviar.
Ahora necesito hacer algunos cambios en la página HTML principal después de que el formulario se envíe correctamente.
Intenté esto usando jQuery. Pero esto no garantiza que las tareas se realicen después de alguna forma de respuesta al envío del formulario.
$("#myform").submit(function(event) {
// do the task here ..
});
¿Cómo adjunto una devolución de llamada para que mi código se ejecute solo después de que el formulario se haya enviado correctamente? ¿Hay alguna forma de agregar alguna devolución de llamada .success o .complete al formulario?
Respuestas:
Acabo de hacer esto
Y las cosas funcionaron perfectamente.
Consulte esta documentación de la API para obtener detalles más específicos.
fuente
<form>
se presenta habitualmente? (Me refiero a que no con Ajax) ¿Qué puedo poner en el primer argumento.bind()
? EDITAR: bueno, supongoclick
. Nvm, lo siento. : pNo pude hacer que la solución número uno con voto positivo funcionara de manera confiable, pero descubrí que funciona. No estoy seguro de si es necesario o no, pero no tengo un atributo de acción o método en la etiqueta, lo que garantiza que la función $ .ajax maneje el POST y le brinda la opción de devolución de llamada.
fuente
$(this).serialize()
línea. Te permitejQuery.ajax()
enviar el formulario existente en segundo plano, luego capturar la respuesta del servidor y hacer algo con ella..serialize
no incluye entradas de archivo en su solicitud POST. Use HTML5 FormData (consulte esta pregunta ) en su lugar, a menos que sea compatible con navegadores antiguos como IE <9$(this).serialize()
, ¡resolvió mis problemas!Tendrá que hacer las cosas manualmente con una llamada AJAX al servidor. Esto requerirá que también anule el formulario.
Pero no te preocupes, es pan comido. Aquí hay una descripción general de cómo trabajará con su formulario:
preventDefault
método)Primero, tendrá que cancelar la acción de envío del formulario así:
Y luego, tome el valor de los datos. Supongamos que tiene un cuadro de texto.
Y luego dispara una solicitud. Supongamos que es una solicitud POST.
Y esto debería ser suficiente.
Nota 2: para analizar los datos del formulario, es preferible que utilice un complemento . Hará su vida realmente fácil, además de proporcionar una buena semántica que imita una acción de envío de formulario real.
Nota 2: no es necesario utilizar diferidos. Es solo una preferencia personal. También puede hacer lo siguiente, y también debería funcionar.
fuente
Para MVC, este era un enfoque aún más fácil. Necesita usar el formulario Ajax y configurar las opciones Ajax
aquí está el código de envío, se encuentra en la sección de preparación del documento y vincula el evento onclick del botón para enviar el formulario
aquí está la devolución de llamada a la que se hace referencia en AjaxOptions
en el método del controlador para MVC se ve así
fuente
No creo que haya una función de devolución de llamada como la que describe.
Lo normal aquí es hacer las alteraciones usando algún lenguaje del lado del servidor, como PHP.
En PHP, por ejemplo, podría buscar un campo oculto de su formulario y hacer algunos cambios si está presente.
PHP:
Una forma de hacerlo en Jquery es usar Ajax. Puede escuchar enviar, devolver falso para cancelar su comportamiento predeterminado y usar jQuery.post () en su lugar. jQuery.post tiene una devolución de llamada exitosa.
http://api.jquery.com/jQuery.post/
fuente
Los controladores "al enviar" del formulario se llaman antes de enviar el formulario. No sé si hay un controlador al que llamar después de enviar el formulario. En el sentido tradicional que no es Javascript, el envío del formulario recargará la página.
fuente
fuente
ajaxForm()
un componente de terceros que ha instalado? No es una parte estándar de jQuery.