Error al pasar un array de consulta mysql a JSON
Publicado por Fabian (3 intervenciones) el 15/07/2020 20:11:46
Muy buenos días amigos, llevo 2 días intentando resolver un problema que tengo y la verdad creo que requiero ayuda. Resulta que tengo una base de datos sencilla y cuando hago la consulta desde un dato POST mandado desde AJAX todo bien, la consulta arroja solo una fila dado que es traer un dato por el ID, cuando el dato retorna a ajax intento pasarlo a tipo JSON utilizando JSON.parse pero me sale un error de sintaxis.
1. La consulta preparada es la siguiente
2. el archivo que envía a la clase Clientes al método showClientById el idClient y que recibe el array retornado es el siguiente
3. Dado que la consula es exitosa entra al if y envía al archivo AJAX el array de tipo String, esta variable se intenta convertir a tipo JSON pero se genera un error:
La consola imprime el siguiente error:
Uncaught SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data at line 1 column 286 of the JSON data.
Adjunto un documoento paso a paso bien explicado para que entiendan que sucede, muchas gracias a quien pueda ayudarme.
1. La consulta preparada es la siguiente
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public function showClientById(int $id)
{
//consulta tabla clientes y trae datos
$consulta = $this->bd->prepare('
SELECT * FROM clientes WHERE id = :id LIMIT 1');
$consulta->bindParam(":id", $id, PDO::PARAM_INT);
$consulta->execute();
$datos = $consulta->fetch();
//print_r($datos);
$json = array();
if ($datos != false)
{
$json[] = array(
'id' => $datos['id'],
'nit'=> $datos['nit'],
'nombre'=> $datos['nombre'],
'email'=> $datos['email'],
'ciudad'=> $datos['ciudad'],
'direccion'=> $datos['direccion'],
'empresa'=> $datos['empresa'],
'actividadEco'=> $datos['actividadEco'],
'telfijo'=> $datos['telfijo'],
'telmovil'=> $datos['telmovil']
);
$json = json_encode($json, JSON_FORCE_OBJECT);
$resultado = $json;
}
else
{
$resultado = $datos;
}
return $resultado;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
if(isset($_POST['clientId']) and is_numeric($_POST['clientId']) != false)
{
$clienteId = filter_var(strtolower($_POST['clientId']), FILTER_SANITIZE_STRING);
$clienteById = new Clientes();
$resultClient = $clienteById->showClientById($clienteId);
if($resultClient != false)
{
echo $resultClient;
}else
{
$errores.='<li class="advertencias text-center bg-danger text-light lead">¡El Cliente con este ID no existe!</li>';
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
$('.buscarId').click(function(e) {
let clientId = $('#clientId').val();
console.log(clientId);
$.ajax(
{
url: 'contenido.php',
type: 'POST',
data: {clientId},
success: function(response){
let task =JSON.parse(response);
console.log(task);
}
})
Uncaught SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data at line 1 column 286 of the JSON data.
Adjunto un documoento paso a paso bien explicado para que entiendan que sucede, muchas gracias a quien pueda ayudarme.
Valora esta pregunta


0