AJAX - VM4976:1 Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse

 
Vista:
sin imagen de perfil
Val: 14
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

VM4976:1 Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse

Publicado por Gonzalo (4 intervenciones) el 12/02/2021 21:42:14
Hola, antes que nada, gracias por la atención y ayuda prestadas y acogerme en este foro.
Tengo este código PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
	include('conexion.php');
	$query="SELECT * FROM tareas";
	$resultado=mysqli_query($connection,$query);
	if(!$resultado)
	{
		die('Erro en la consulta'.mysqli_error($conexion));
	}
        $json=array();
	while($row=mysqli_fetch_assoc($resultado))
	{
		$json[]=array
		(
			'name'=>$row['nombre'],
			'description'=>$row['descripcion'],
			'id'=>$row['id'],
		);
	}
        $arreglo=array(1,2,8,46);
	$jsonString= json_encode($json,JSON_UNESCAPED_UNICODE,	JSON_INVALID_UTF8_IGNORE);
        json_last_error();
	print_r($jsonString);
 
 ?>
Y este código javascript/Jquery:
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
$(function()
{
	let edit=false;
	$('#task-result').hide();
	fetchTasks();
	//BUSCAR TAREA
	$('#search').keyup(function(e)
	{
		if($('#search').val())
		{
			let search=$('#search').val();
			//Ajax
			$.post
			(
				'task-search.php',
				{search},
				function(data,status)
				{
					var tasks=JSON.parse(data);
					let template='';
					tasks.forEach(data=>
					{
						template+=
						`
							<li>${data.nombre}</li>
						`
					});
					/*for(i=0;i=tasks.length;i++)
					{
						tasks[i].nombre
					}*/
					$('#container').html(template);
					$('#task-result').show();
				}
			)
		}
 
	})
	//AGREGAR TAREA
	$('#task-form').submit(function(e)
	{
		const postData=
		{
			name:$('#nombre').val(),
			description:$('#descripcion').val(),
			id:$('#task-id').val()
		}
		//definimos la variable url con un condicional ternario
		let url=edit===false?'task-add.php':'task-edit.php';
		$.post
		(
			url,
			postData,
			function(data)
			{
				fetchTasks();
				console.log(data)
				//Vaciar los campos delformulario
				$('#task-form').trigger('reset');
			}
		)
		edit=false;
		e.preventDefault();
	});
	//LISTAR TAREAS
	function fetchTasks()
	{
		$.get
		(
			'task-list.php',
			function(data)
			{
                                var tasks=JSON.parse(data);
				console.log(data);
			}
		)
	}
	//ELIMINAR TAREAS
	$(document).on('click','.task-delete',function()
	{
		if(confirm('Estas seguro que quieres eliminar esta tarea?'))
			{
				let element=$(this)[0].parentElement.parentElement;
				let id=$(element).attr('taskId');
				$.post
				(
					'task-delete.php',
					{id},
					function(data)
					{
						console.log(data);
						fetchTasks();
					}
				)
			}
	})
	//EDITAR TAREAS
	$(document).on('click','.task-item',function()
	{
		let element=$(this)[0].parentElement.parentElement;
		let id=$(element).attr('taskId');
		$.post
		(
			'task-single.php',
			{id},
			function(data)
			{
				let tarea=JSON.parse(data);
				let nombreTarea=tarea.name;
				let idTarea=tarea.id;
				let descripcionTarea=tarea.description;
				console.log('Nombre de la tarea: '+nombreTarea);
				$('#nombre').val(nombreTarea);
				$('#descripcion').val(descripcionTarea);
				$('#task-id').val(idTarea);
				edit=true;
			}
		)
	})
});
Y este error:
Uncaught SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at Object.success (app.js:73)
at c (jquery-3.5.1.min.js:2)
at Object.fireWith [as resolveWith] (jquery-3.5.1.min.js:2)
at l (jquery-3.5.1.min.js:2)
at XMLHttpRequest.<anonymous> (jquery-3.5.1.min.js:2)

Este mismo código me está funcionando en local, a que se puede deber que no funcione cuandon intento subirlo a un servidor público?

<un saludo>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 87
Oro
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

VM4976:1 Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse

Publicado por joel (30 intervenciones) el 13/02/2021 09:09:41
Puede ser problema del php, que no se conecta a la base de datos, o cualquier error...

Revisa el inspector de red del navegador, ahí veras que te devuelve el PHP!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

VM4976:1 Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse

Publicado por Gonzalo (4 intervenciones) el 13/02/2021 12:56:30
Ya he comprobado la conexión con la BD y la consulta, todo es correcto, de hecho he logrado que me la devuelva como un array en el inpector de red del navegador, pero no consigo pasarla a formato JSON
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 87
Oro
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

VM4976:1 Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse

Publicado por joel (30 intervenciones) el 14/02/2021 09:26:58
No se muy bien lo que recibes, pero tal y como lo tienes te tendria que funcionar:
1
var tasks=JSON.parse(data);
que valor tienes la variable tasks?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

VM4976:1 Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse

Publicado por Gonzalo (4 intervenciones) el 15/02/2021 19:03:45
Yo también pienso que debería de funcionar, pero ese es el error que me da.
En el inspector de red del navegador se encuentra vacío.
Y si en vez de colocar como última línea:
1
echo $jsonString;
Coloco:
1
print_r($json);
Este es el resultado del inspector de red del navegador:
Array ( [0] => Array ( [name] => Aprender JQuery [description] => Tengo que aprender JQuery [id] => 1 ) [1] => Array ( [name] => leer [description] => Tengo que leer un libro enterito [id] => 4 ) [2] => Array ( [name] => Programar scripts [description] => Desarrollar scripts para aprender programaci�n [id] => 5 ) [3] => Array ( [name] => Desarrollar m�dulos [description] => Desarrollar m�dulos wordpress [id] => 6 ) [4] => Array ( [name] => Programar [description] => Tengo que crear un programa [id] => 7 ) [5] => Array ( [name] => Aprender Python [description] => Aprender python y sus librer�as [id] => 9 ) [6] => Array ( [name] => Aprender Jquery [description] => Aprender Jquery [id] => 10 ) [7] => Array ( [name] => Aprender responsive [description] => Aprender dise�o responsive [id] => 11 ) [8] => Array ( [name] => Agregar tareas [description] => Agregar m�s tareas [id] => 13 ) [9] => Array ( [name] => Agregar tarea n�14 [description] => Agregar tarea en ouedton 14 [id] => 15 ) [10] => Array ( [name] => Agregar tarea n�15 [description] => Agregar tarea en el puesto n�mero 15 [id] => 16 ) [11] => Array ( [name] => Agregar tarea n�16 [description] => Agregar tarea n�mero 16 [id] => 17 ) [12] => Array ( [name] => Nueva tarea [description] => Crear nueva tarea [id] => 18 ) [13] => Array ( [name] => Agrega tarea nueva [description] => ASgregar tarea nueva 2.0 [id] => 19 ) [14] => Array ( [name] => test [description] => testeando [id] => 20 ) )

Como podría convertir convertir este array a JSON?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 87
Oro
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

VM4976:1 Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse

Publicado por joel (30 intervenciones) el 15/02/2021 20:19:33
Hola Gonzalo, pero ahi estas en PHP no en JavaScript...

tienes que utilizar json_encode() desde php para pasar el array a json

1
echo json_encode($json);

Desde javascript ya lo podras obtener con JSON.parse()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

VM4976:1 Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse

Publicado por Gonzalo (4 intervenciones) el 16/02/2021 18:45:32
Al final lo conseguí, el problema estaba en la codificación, encontre en el manual de php que para codificar a json es necesario tener formato utf8: https://www.php.net/manual/es/function.json-encode.php

Y lo pude hacer con esta simple función: https://www.php.net/manual/es/function.utf8-encode.php
quedándome el código así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
	include('conexion.php');
	$query="SELECT * FROM tareas";
	$resultado=mysqli_query($connection,$query);
	if(!$resultado)
	{
		die('Erro en la consulta'.mysqli_error($conexion));
	}
	while($row=mysqli_fetch_array($resultado))
	{
		$json[]=array
		(
			'name'=>utf8_encode($row['nombre']),
			'description'=>utf8_encode($row['descripcion']),
			'id'=>utf8_encode($row['id'])
		);
	}
	$jsonString=json_encode($json);
        echo $jsonString;
 
 ?>
Espero que si alguien más tiene este error que le sirva este hilo.
Aprovecho para dejar el enlace a mi aplicación ya finalizada:
http://gonzalo.batcave.net/ajax/index.html
Gracias por la atención prestada.
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

VM4976:1 Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse

Publicado por Ernesto (1 intervención) el 04/05/2022 19:18:28
Muchas gracias por compartir tu respuesta me sirvió de mucho por que también me enfrente a ese problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar