Estoy tratando de enviar datos desde un formulario a una base de datos. Aquí está el formulario que estoy usando:
<form name="foo" action="form.php" method="POST" id="foo">
<label for="bar">A bar</label>
<input id="bar" name="bar" type="text" value="" />
<input type="submit" value="Send" />
</form>
El enfoque típico sería enviar el formulario, pero esto hace que el navegador se redirija. Usando jQuery y Ajax , ¿es posible capturar todos los datos del formulario y enviarlos a un script PHP (un ejemplo, form.php )?
Respuestas:
El uso básico de
.ajax
se vería así:HTML:
jQuery:
Nota: Desde jQuery 1.8,
.success()
,.error()
y.complete()
son aprobadas a favor de.done()
,.fail()
y.always()
.Nota: Recuerde que el fragmento anterior debe hacerse después de que DOM esté listo, por lo que debe colocarlo dentro de un
$(document).ready()
controlador (o usar la$()
abreviatura).Consejo: Puede encadenar los manejadores de devolución de llamada de esta manera:
$.ajax().done().fail().always();
PHP (es decir, form.php):
Nota: desinfecte siempre los datos publicados para evitar inyecciones y otros códigos maliciosos.
También puede usar la taquigrafía
.post
en lugar del.ajax
código JavaScript anterior:Nota: El código JavaScript anterior está hecho para funcionar con jQuery 1.8 y posterior, pero debería funcionar con versiones anteriores hasta jQuery 1.5.
fuente
request
fue declarado como un var local queif (request) request.abort();
nunca funciona.serialize()
, los omitirá.Para hacer una solicitud de Ajax usando jQuery , puede hacerlo mediante el siguiente código.
HTML:
JavaScript:
Método 1
Método 2
El
.success()
,.error()
y.complete()
devoluciones de llamada están en desuso a partir de jQuery 1.8 . Para preparar el código para su eventual eliminación, usar.done()
,.fail()
y.always()
en su lugar.MDN: abort()
. Si la solicitud ya se ha enviado, este método cancelará la solicitud.Por lo tanto, hemos enviado con éxito una solicitud de Ajax, y ahora es el momento de obtener datos al servidor.
PHP
A medida que hacemos una solicitud POST en una llamada Ajax (
type: "post"
), ahora podemos obtener datos usando$_REQUEST
o$_POST
:También puede ver lo que obtiene en la solicitud POST simplemente con cualquiera de los dos. Por cierto, asegúrese de que
$_POST
esté configurado. De lo contrario, recibirá un error.Y está insertando un valor en la base de datos. Asegúrese de que está sensibilizando o escapando todas las solicitudes (ya sea que haya realizado una GET o POST) correctamente antes de realizar la consulta. Lo mejor sería usar declaraciones preparadas .
Y si desea devolver los datos a la página, puede hacerlo simplemente haciendo eco de esos datos como se muestra a continuación.
Y luego puedes obtenerlo como:
Hay un par de métodos abreviados . Puedes usar el siguiente código. Hace el mismo trabajo.
fuente
dataType
), para que pueda aceptar JSON o algún otro formato?Me gustaría compartir una forma detallada de cómo publicar con PHP + Ajax junto con errores arrojados en caso de falla.
En primer lugar, cree dos archivos, por ejemplo
form.php
yprocess.php
.Primero crearemos uno
form
que luego se enviará utilizando eljQuery
.ajax()
método. El resto se explicará en los comentarios.form.php
Valide el formulario utilizando la validación del lado del cliente jQuery y pase los datos a
process.php
.Ahora echaremos un vistazo a
process.php
Los archivos del proyecto se pueden descargar desde http://projects.decodingweb.com/simple_ajax_form.zip .
fuente
Puedes usar serializar. A continuación se muestra un ejemplo.
fuente
$.parseJSON()
es un salvavidas total, gracias. Estaba teniendo problemas para interpretar mi salida en función de las otras respuestas.HTML :
JavaScript :
fuente
Yo uso la forma que se muestra a continuación. Envía todo como archivos.
fuente
Si desea enviar datos usando jQuery Ajax, entonces no hay necesidad de etiqueta de formulario y botón de enviar
Ejemplo:
fuente
fuente
El manejo de errores de Ajax y el cargador antes de enviar y después de enviar con éxito muestra un cuadro de inicio de alerta con un ejemplo:
fuente
Estoy usando este simple código de una línea durante años sin ningún problema (requiere jQuery):
Aquí ap () significa una página Ajax y af () significa un formulario Ajax. En un formulario, simplemente llamando a la función af () publicará el formulario en la URL y cargará la respuesta en el elemento HTML deseado.
fuente
En su archivo php ingrese:
y en su archivo js envíe un ajax con el objeto de datos
o guárdelo como está con el formulario de envío. Solo necesita esto, si desea enviar una solicitud modificada con contenido adicional calculado y no solo algunos datos de formulario, que ingresa el cliente. Por ejemplo, un hash, una marca de tiempo, un ID de usuario, un ID de sesión y similares.
fuente
Por favor, chequee esto. Es el código de solicitud completo de Ajax.
fuente
Este es un muy buen artículo que contiene todo lo que necesita saber sobre el envío de formularios jQuery.
Resumen del artículo:
Enviar formulario HTML simple
HTML:
JavaScript:
HTML multiparte / formulario de datos Formulario Enviar
Para cargar archivos al servidor, podemos usar la interfaz FormData disponible para XMLHttpRequest2, que construye un objeto FormData y puede enviarse al servidor fácilmente usando jQuery Ajax.
HTML:
JavaScript:
Espero que esto ayude.
fuente
Desde la introducción de la API Fetch, ya no hay ninguna razón para hacerlo con jQuery Ajax o XMLHttpRequests. Para enviar datos de formulario a un script PHP en JavaScript vainilla, puede hacer lo siguiente:
Aquí hay un ejemplo muy básico de un script PHP que toma los datos y envía un correo electrónico:
fuente