29 - $.ajax |
Hasta ahora hemos visto que jQuery nos provee varias formas de recuperar y enviar datos al servidor utilizando ajax:
Existe otra función llamada $.ajax que es la más completa de todas, pero como desventaja es más compleja su empleo.
La sintaxis de la función $.ajax es:
ajax([objeto literal])
Retorna un objeto XMLHttpRequest que podemos eventualmente utilizarlo.
Con un ejemplo veremos las propiedades principales que podemos configurar en el parámetro a enviar.
Problema:Implementar una aplicación que calcule el cuadrado de un número que ingresamos por teclado. La operación se realiza en el servidor, le enviamos los datos mediante la función de jQuery $.ajax
pagina1.html
<!DOCTYPE html> <html> <head> <title>Ejemplo de jQuery</title> <meta charset="UTF-8"> </head> <body> <form action="pagina1.php" method="post" id="formulario"> Ingrese nro:<input type="text" name="nro" id="nro" size="10"><br> <input type="submit" value="Calcular el cuadrado" id="enviar"> <div id="resultados"></div> </form> <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> <script src="funciones.js"></script> </body> </html>
funciones.js
let x = $(document); x.ready(inicializarEventos); function inicializarEventos() { let x = $("#enviar"); x.click(presionSubmit); } function presionSubmit() { let v = $("#nro").val(); $.ajax({ async: true, type: "POST", dataType: "html", contentType: "application/x-www-form-urlencoded", url: "pagina1.php", data: "numero=" + v, beforeSend: inicioEnvio, success: llegadaDatos, timeout: 4000, error: problemas }); return false; } function inicioEnvio() { let x = $("#resultados"); x.html('<img src="cargando.gif">'); } function llegadaDatos(datos) { $("#resultados").text(datos); } function problemas() { $("#resultados").text('Problemas en el servidor.'); }
pagina1.php
<?php $cuadrado=$_REQUEST['numero'] * $_REQUEST['numero']; echo $cuadrado; ?>
Veamos que datos podemos enviarle a la función $.ajax:
function presionSubmit() { let v = $("#nro").val(); $.ajax({ async: true, type: "POST", dataType: "html", contentType: "application/x-www-form-urlencoded", url: "pagina1.php", data: "numero=" + v, beforeSend: inicioEnvio, success: llegadaDatos, timeout: 4000, error: problemas }); return false; }
Hemos inicializado las siguientes propiedades: