Botón de enviar formulario de contacto – deshabilitar redirigir

Estoy usando un formulario PHP simple que encontré aquí http://www.1stwebdesigner.com/tutorials/custom-php-contact-forms/comment-page-2/#comments

Pero estoy teniendo algunos problemas con eso. Al hacer clic en el botón de enviar, quiero poder permanecer en mi sitio web en lugar de ser redirigido en mail.php y simplemente imprimir / repetir el mensaje enviado en mi sitio web.

También quiero que los campos tengan requisitos, como no estar vacío, que sé cómo hacer en php, pero primero debo resolver el problema de la redirección.

Lo que necesitas es $ .ajax de jQuery . Esto enviará una solicitud POST sin volver a cargar la página.

Digamos que tu botón se llama myButton luego para el evento onClick() llamarías a la función

 $.ajax({ type: "POST", url: "some.php", data: { name: "John", location: "Boston" } }).success(function( msg ) { alert( "Data Saved: " + msg ); }); 

En su some.php usted simplemente usaría $_POST['name'] y $_POST['location'] para recuperar la información.

Editar

Supongamos que tiene un campo de entrada. También puede recuperar información de dicho campo a través de jQuery. A continuación, puede enviar la información desde el campo de entrada a través de ajax a su script php

 $('#yourInputField').val(); 

donde yourInputField es la ID del campo de entrada. Con esto puedes obtener esta información en el script. Si tiene varios elementos en un formulario, es posible que desee consultar la función serializar () . Hace lo mismo, en principio, simplemente comprime toda la información en una cadena JSON.

Con la opción de permanecer en la misma página, simplemente establece la acción de formulario en su página actual y luego puede usar:

 if (isset ($_POST['submit'])){ (php code to run goes in here) echo 'blah blah'; } 

Eso ejecutará el código php cuando se presione el botón Enviar 🙂

Sin embargo, esto aún volverá a cargar la página, pero no lo dirigirá a una página php diferente. Si no quieres que la página vuelva a cargar, puedes usar ajax 🙂