Hola, sufridores encerrados.
Es la primera vez que intento utilizar Ajax con jQuery. Y soy completamente
ignorante del tema.
Intento recibir una respuesta de MySql con ajax desde una pagina PHP.
Como recibo un arreglo vacío, me pongo a investigar y probar cosas y cosas....
Descubro lo que pienso que es el problema: en los datos que recibe el archivo .php, para hacer la llamada a MySql.
Resulta que la consulta a la base de datos se realiza incorrectamente porque la variable string que recibe el archivo PHP desde Ajax lleva al final dos corchetes [] os pongo el código:
Esta es la consulta con Ajax
Código:
if (theForm.NIF.value != '')
{
valorBusqueda = theForm.NIF.value;
$.ajax({
url: 'ver_si_dupliDNI.php',
data: {valorBusqueda},
type: 'POST',
success: function(response)
{
if(response.error)
{
warnInvalid(theForm.NIF,"Error al recibir información del la Base de Datos.","");
}else{ alert(response); // me devuelve []
let array_obtenido = JSON.parse(response);
siDupli = array_obtenido.length;
if (siDupli > 0)
{
warnInvalid(theForm.NIF,"Ya existe otro cliente con el mismo NIF.","");
}
}
}
});
}
Y este es el archivo PHP:
Código PHP:
<?php
//Archivo de conexión a la base de datos
require ('../conexion.php');
//Variable de búsqueda
$consultaBusqueda = $_POST['valorBusqueda'];
$consultaBusqueda = str_replace($caracteres_malos, $caracteres_buenos, $consultaBusqueda);
//Comprueba si $consultaBusqueda está seteado
if (isset($consultaBusqueda)) {
print('Busqueda2 = '.$consultaBusqueda); // Devuelve el NIF con corchetes: 12345678Z[]
$consulta = mysqli_query($conection, "SELECT * FROM cliente
WHERE nif = '%$consultaBusqueda%'
");
};
$json = array();
while($row = mysqli_fetch_array($consulta)) {
/// print('Busqueda2 = '.$row['nif']);
$json[] = array(
'nif' => $row['nif']
);
}
$jsonstring = json_encode($json);
echo $jsonstring;
?>
¡ Ah, en la base de datos existe un registro con nif=12345678Z! Que es el que envío desde Ajax.
Seguro que es una simpleza. Pero llevo todo el día con esto y no encuentro la salida.
Espero vuestra ayuda. Y ya, gracias por adelantado.
Saludos.