Presentar formulario y permanecer en la misma página?

Tengo un formulario que se parece a esto

y me gustaría mantenerme en la misma página, cuando se hace clic en Enviar, pero todavía se ha ejecutado receiver.pl .

¿Cómo se debe hacer eso?

La respuesta más fácil: jQuery. Haz algo como esto:

 $(document).ready(function(){ var $form = $('form'); $form.submit(function(){ $.post($(this).attr('action'), $(this).serialize(), function(response){ // do something here on success },'json'); return false; }); }); 

Si desea agregar contenido dinámicamente y todavía necesita que funcione, y también con más de un formulario, puede hacer esto:

  $('form').live('submit', function(){ $.post($(this).attr('action'), $(this).serialize(), function(response){ // do something here on success },'json'); return false; }); 

El 99% de las veces usaría XMLHttpRequest o buscaría algo como esto. Sin embargo, hay una solución alternativa que no requiere javascript …

Puede incluir un iframe oculto en su página y establecer el atributo de destino de su formulario para apuntar a ese iframe.

   

Hay muy pocos escenarios en los que elegiría esta ruta. En general, manejarlo con javascript es mejor porque, con javascript puedes …

  • manejar con gracia los errores (por ejemplo, volver a intentar)
  • proporcionar indicadores de IU (por ejemplo, carga, procesamiento, éxito, falla)
  • ejecutar la lógica antes de que se envíe la solicitud, o ejecutar la lógica después de que se recibe la respuesta.

La forma HTTP / CGI de hacer esto sería que su progtwig devuelva un código de estado HTTP de 204 (Sin contenido).

Cuando presionas el botón de enviar, la página se envía al servidor. Si desea enviarlo de manera asincrónica, puede hacerlo con ajax.

Solo usa: action="" . No hay necesidad de nada como javascript.