CÓDIGOS BÁSICOS AJAX PARA VARIOS CASOS
La información completa de jquery ajax está en https://api.jquery.com/jQuery.ajax/

1) No mando ni recibo datos (ej: actualizar una tabla desde otra).

En este caso solo mandamos el URL del script php. Y recibimos éxito o el mensaje de error que enviemos del script. (un string normalmente). Ver ejemplo

2) Mando datos pero NO recibo. (ej: Editar, borrar tablas, mail etc.).

En este caso mandamos el URL del script php, el tipo de transferencia y los datos.
Los datos van en la forma 'var1=' + valor1 + '&var2=' + valor2 + .... '&varN=' + valorN; von var1...varN los nombres del _POST[] que recuperamos en el script PHP y valor1 ... valorN las variables con los valores.
Y recibimos éxito o el mensaje de error que enviemos del script PHP. (un string normalmente). Ver ejemplo

3) Mando un/varios datos pero recibo uno. (ej: cargar un nuevo registro tablas,obtener max(), count() etc. por SQL).

En este caso mandamos el URL del script php, el tipo de transferencia (en este caso por ser un solo valor es dataType: 'text',) y los datos.
Los datos van en la forma 'var1=' + valor1 + '&var2=' + valor2 + .... '&varN=' + valorN; von var1...varN los nombres del _POST[] que recuperamos en el script PHP y valor1 ... valorN las variables con los valores.
Y recibimos el dato que devuelve PHP o el mensaje de error que enviemos del script PHP. (un string normalmente). Ver ejemplo , también ver en acción el CASO 3

4) Mando datos y recibo varios en un array. (ej: un registro de tabla).

En este caso mandamos el URL del script php, el tipo de transferencia (como recibo un array el tipo será: dataType: 'json',) y los datos. El script PHP devuelve un vector jsonizado con los datos, que recuperamos por clave (preferentemente) o índice sobre el data devuelto. En el script PHP los cargamos directamente en el vector por clave con: $salida = array('clave 1'=> valor1,'clave2'=> valor2,....,'clave n'=> valor n);.
Ver en acción el CASO 4
En este caso la respuesta del script es {"a":4,"b":6,"c":16,"d":24}

5) Mando datos y recibo varios arrays. (ej: algunos registros de tabla).

En este caso mandamos el URL del script php, el tipo de transferencia (en este caso por ser un solo valor es dataType: 'json',) y los datos.
. El script PHP devuelve un vector de vectores jsonizado con los datos, que recuperamos por clave (preferentemente) o índice sobre el data devuelto, con un bucle $.each(data, function(i, item) {. Hay tres opciones en el script PHP
  • A- Si los datos son crudos de la tabla directamente uso el bloque A Ver ejemplo (script PHP
  • B- Si los datos hay que procesarlos antes del envío uso el bloque B Ver ejemplo (script PHP)
  • C- Los datos no vienen de una tabla uso el bloque C Ver en acción el CASO 5
    En este caso la respuesta del script es: [{"n":"2","a12":8,"a22":10},{"n":"3","a12":12,"a22":15},{"n":"4","a12":16,"a22":20}]

6) Subir un archivo.

Este caso está explicado en cargar un archivo por AJAX: Ver ejemplo

7) Mando un array, por ejemplo muchos registros para UPDATE (puedo o no recibir respuesta del script

La forma de enviar el array por AJAX es data: {'envio': JSON.stringify(envio)}, suponiendo que el array es "envio" y lo mandamos jsonizado con stringify(). El script php desjosoniza el envío con $data = json_decode($_POST['envio']); y después desglosa los subarrays con un bucle for($i=0;$i<$filas; $i++){} con ($filas= count($data); ) pasando cada subarray a un array temporario $temporario = $data[$i]; y finalmente recuperando cada valor con $var0 = $temporario[0]; ....$varN = $temporario[N];
Ver ejemplo con envío de tabla y sin devolución

						
1) No mando ni recibo datos
	
	Javascript*****************************************
	<script>
	$.ajax({   
 	      	url: ruta,  
				success: function(datos){
					if(datos.indexOf('exito') == 0){
						// código si ocurrió con éxito
					}else{
						// código si ocurre el error
					}
               	} //fin success	
			}); //fin ajax
			</script>
	Script PHP*****************************************		

		echo "exito"; 				// si hay éxito
		echo "mensaje de error"		// si no hay éxito

2)Mando datos pero NO recibo.

Javascript*****************************************
	<script>
	var a1 = $("#input1").val();
	var a2 = $("#input2").val();
	var a3 .....................
	$.ajax({
        url: ruta,
        type: "POST",
         data: 'dato1=' + a1 + '&dato2=' + a2 ....,    //mando los datos
         success: function(datos){
			if(datos.indexOf('exito') == 0){
				// código si ocurrió con éxito
			}else{
				// código si ocurre el error
			}
        } //fin success	
	}); //fin ajax
	</script>

	Script PHP*****************************************

	$a1 = $_POST["dato1"];
	$a2 = $_POST["dato2"];
	// proceso los datos....
	echo "exito"; 				// si hay éxito
	echo "mensaje de error"		// si no hay éxito

	3)Mando un / varios datos y recibo uno.

	Javascript*****************************************
	<script>
	$("#boton3").click(function(evento){
		var entrada= $('#caso3').val();
		var preparado = 'numero=' + entrada;
		$.ajax({       
			type: "POST",  
			url: "tec-php-ajax-procesar.php?accion=3",  
			data: preparado,
			dataType: 'text',  
			success: function(datos) { 
				if(datos.indexOf('Error') != 0){
					$('#msg3').html(datos*2);		 
				}else{
					$('#msg3').html('El valor: ' + entrada + ' es incorrecto');
				}
					}	 //fin success
			});   		 //fin ajax
		});	//fin boton3 click
		</script>

	Script PHP*****************************************
	
	$recibido= $_POST["numero"];
	if($recibido==2){
		echo $recibido;
	}else{
		echo "Error";
	}
	
	
	4)Mando datos y recibo varios en un array.

	Javascript*****************************************
	<script>
	$("#boton4").click(function(evento){
		var entrada1= $('#caso41').val();
		var entrada2= $('#caso42').val();
		var preparado = 'n1=' + entrada1 + '&n2=' + entrada2;
		$.ajax({       
			method: "POST",  
			url: "tec-php-ajax-procesar.php?accion=4",  
			data: preparado,
			dataType:'json',  
			success: function(datos) {
				if(datos.a != 'error'){
					$('#msg4').html(datos.a + " - " + datos.b + " - " + datos.c + " - " +datos.d);		 
				}else{
					$('#msg4').html('Alguno de los valores no es numerico');
				}  
					},
					error: function(request,error) {
				$('#msg4').html(" ** " + error);
			}	
		});    //fin ajax
	});	//fin boton4 click
	</script>

	Script PHP del ejemplo (ver en acción)**************************

	$n1= $_POST["n1"];
	$n2= $_POST["n2"];
	if (is_numeric($n1) && is_numeric($n2)){
		$salida = array('a'=>$n1*2,'b'=> $n1*3,'c'=>$n2*2,'d'=> $n2*3);
		echo json_encode($salida);
	}else{
		$salida = array('a'=>'error');
		echo json_encode($salida);
	} 	

	5) Mando datos y recibo varios arrays

Javascript*****************************************
<script>
$("#boton5").click(function(evento){
				var entrada1= $('#caso51').val();
				var entrada2= $('#caso52').val();
				var preparado = 'n1=' + entrada1 + '&n2=' + entrada2;
				$.ajax({       
					method: "POST",  
					url: "tec-php-ajax-procesar.php?accion=5",  
					data: preparado,
					dataType:'json',  
					success: function(datos) {
						if(datos.a != 'error'){
							var salida= "";
							$.each(datos, function(i, item) {   //i es clave item es valor
								salida = salida + ('X' + item.n +' A= ' + item.a12 + ' B= ' + item.a22 + '<br/>');
							});
							$('#msg5').html(salida);
						}else{
							$('#msg5').html('Alguno de los valores no es numerico');
						}  
					},
					error: function(request,error) {
						$('#msg4').html(" ** " + error);
					}	
				});    //fin ajax
			});	//fin boton5 click
</script>

Script PHP del ejemplo (ver en acción)**************************

$n1= $_POST["n1"];
		$n2= $_POST["n2"];
		if (is_numeric($n1) && is_numeric($n2)){
			$salida[] = array('n'=>'2','a12'=>$n1*2,'a22'=> $n2*2);
			$salida[] = array('n'=>'3','a12'=>$n1*3,'a22'=> $n2*3);
			$salida[] = array('n'=>'4','a12'=>$n1*4,'a22'=> $n2*4);
			echo json_encode($salida);

		}else{
			$salida = array('a'=>'error');
			echo json_encode($salida);
		} 

		5) Mando un array o "array de array" 

Javascript*****************************************
<script>
envio.push(valores);			//cargo valores o arrays en envio
$.ajax({  
	type: "POST",  
	url: "tec-php-editar-masivo-procesar.php?accion=A",  
	data: {'envio': JSON.stringify(envio)}, 			 
	success: function(data) { 
		$("#msgtxt").html("los valores con aumento han sido guardados");
	},		
	error: function(request,error) {
		$("#msgtxt").html("ha ocurrido un error al guardar los valores");					
	}
});    //fin ajax

Script PHP **************************

$data = json_decode($_POST['envio']);
$filas= count($data);
for($i=0;$i<$filas; $i++){							//bucle sub-array por sub-array
	$temporario = $data[$i];						//temporario contiene cada sub-array
	$var0 = $temporario[0];
	$var1 = $temporario[1];
	.....
	$varN = $temporario[N];
	..... 											//procesamos los valores		
}
echo(json_encode([.......]));						//devolvemos algo (ver los otros ejemplos y pegar)


















	Script PHP en el caso de devolución de tablas SQL**************

	$a1 = $_POST["dato1"];
	$a2 = $_POST["dato2"];
	// proceso los datos....
	
	
	//    BLOQUE A 

	// si se produce error  $test = "error";

	while ($r = mysqli_fetch_array($sqldevolucion, MYSQLI_ASSOC)){
		$resultado[] = $r;			// agrego a $resultado[] cada registro como sub-array
	}   // fin while
	echo json_encode($resultado);				// lo paso a json y lo exporto
	// en este caso las claves son los nombres de los campos
	
	//    BLOQUE B 

	// si se produce error  $test = "error";

	while ($r = mysqli_fetch_array($sqldevolucion, MYSQLI_ASSOC)){
		$a = $r["a"]..........;	//proceso un campo
		$b = $r["b"]..........;	//proceso un campo
		...........
		$n = $r["n"]..........;	//proceso el último campo
		$resultado[] = array("a" =>$a,"b" => $b,.... "n" => $n);	// agrego a $resultado[] cada registro como sub-array
	}   // fin while
	echo json_encode($resultado);				// lo paso a json y lo exporto
	// en este caso las claves son los nombres que puse en el subarray.

						
					
© IQSystems 2023