Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Me ayudan con este array JSON

tengo problemas que no se ejecuta y vota un error
Uncaught SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)

ya he hecho miles de cosas y naa
index.php
<?php include_once 'conexion.php'; ?>
<script> 	

setInterval( function(){

 var usuario = $('#user-usuario').text();

$.ajax({

		url: 'datosf.php',
		type: 'POST',
		data: 'usuario='+usuario,
		success: function (fins)
		{ 

		$('#data').text(fins);
		//var data = JSON.parse(fins);
		}

	}); //ajax
 

 },1000);



				</script>

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="robots" content="noodp">
	<title>Dashboard – </title>

	
	<script id="data" type="application/json"></script>



	
</head>
<body>


<span id="user-usuario">4299</span>
<br>
<span class="value"><span id="user-balance">0.00108178</span> </span>
<span class="label"> Corriendo</span>

<script >
			

var data = JSON.parse(document.getElementById('data').innerHTML);

console.log(data);
if (userBalance = document.getElementById('user-balance')) {		
	var lastBalance = parseFloat(data.user.balance);
	var tabLeaveBalance = lastBalance;
	var tabLeave = Date.now();
		
	function addUserBalance(add) {		
		lastBalance = parseFloat(lastBalance + add);
		userBalance.innerHTML = lastBalance.toFixed(8);		
	}
	
	window.addEventListener('blur', function () {
		tabLeave = Date.now();
		tabLeaveBalance = parseFloat(lastBalance);	
	});		
		
	window.addEventListener('focus', function () {
		lastBalance = tabLeaveBalance + ((Date.now() - tabLeave) / 2) * parseFloat(data.user.profit_sec);
	});
	
	window.setInterval(function() {
		addUserBalance(parseFloat(data.user.profit_sec));
	}, 10);
}


</script>

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>	
  


	</body>
	</html>
datosf.php
<?php include_once 'conexion.php'; 

$usuario = $_POST['usuario']; 

// Consulta de perfil
$ses= $mysqli->query("SELECT * FROM user WHERE user_id = $usuario ");

while($row = $ses->fetch_assoc())
{
    $fins['user'] = $row;
    

}

echo json_encode($fins);

?> 

Editado
0
Puntos
1440
Visitas
6
Resp
Por donjesco hace 72 meses
Principiante
Respuesta #1
hola el error lo tienes en esta linea:
var data = JSON.parse(document.getElementById('data').innerHTML);
se supone que con innerHTML estas capturando el "html" que esta dentro de:
<script id="data" type="application/json"></script>
y dentro de esa linea no hay html, también veo algo raro que pongas una id a un script, si nos puedes das mas información te estaría agradecido

salu2
0
Puntos
Por alber hace 72 meses
Administrador
Respuesta #2
en el script se muestra
<script id="data" type="application/json"></script>
se muestra sadfsdaf
y id data que tiene script es para que JSON.parse obtenga esos datos y siga la función
var data = JSON.parse(document.getElementById('data').innerHTML);
0
Puntos
Por donjesco hace 72 meses
Principiante
Respuesta #3
ya pero si haces un console.log de la variable data veras que no hay html ppr ningún lado, por lo que no parece la forma mas recomendada para capturar el array del script

a ver si pasa alguién que este más metido en json y te ayuda crack

salu2
0
Puntos
Por alber hace 72 meses
Administrador
Respuesta #4
algo que puedes probar es poner el jquery.js en la parte de arriba del fichero por que estas ejecutando acciones del jquery sin tenerlo cargado

o puedes poner el tipico document ready para que tus scripts esperen a que el jquery este cargado

salu
1
Puntos
Por alber hace 72 meses
Administrador
Respuesta #5
hola alber probe escribiendo directamente
<script id="data" type="application/json">{"user":{"user_id":"4299","balance":"0.00000001","profit_sec":"50.88859e-11"}} </script>
asi si corre y funciona correctamente.

pero al borrarle parra que se ejecute desde la base datos no..

en la linea a continuación dime algunos mas métodos: text, html
$('#data').text(fins);
$('#data').html(fins);

gracias alber seguiré buscando y buscando hasta encontrar el error de la experiencia se aprende..
0
Puntos
Por donjesco hace 72 meses
Principiante
Respuesta #6
ok ya te encontré una solución:
<?php include_once 'conexion.php'; ?>
<script>    

setInterval( function(){

 var usuario = $('#user-usuario').text();

$.ajax({

        url: 'datosf.php',
        type: 'POST',
        data: 'usuario='+usuario,
        success: function (fins)
        { 

        $('#data').text(fins);
        prueba();
        //var data = JSON.parse(fins);
        }

    }); //ajax
 

 },1000);



                </script>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="robots" content="noodp">
    <title>Dashboard – </title>

    
    <script id="data" type="application/json"></script>



    
</head>
<body>


<span id="user-usuario">4299</span>
<br>
<span class="value"><span id="user-balance">0.00108178</span> </span>
<span class="label"> Corriendo</span>

<script >
            

function prueba(){
   var data = JSON.parse(document.getElementById('data').innerHTML);

console.log(data);
if (userBalance = document.getElementById('user-balance')) {        
    var lastBalance = parseFloat(data.user.balance);
    var tabLeaveBalance = lastBalance;
    var tabLeave = Date.now();
        
    function addUserBalance(add) {      
        lastBalance = parseFloat(lastBalance + add);
        userBalance.innerHTML = lastBalance.toFixed(8);     
    }
    
    window.addEventListener('blur', function () {
        tabLeave = Date.now();
        tabLeaveBalance = parseFloat(lastBalance);  
    });     
        
    window.addEventListener('focus', function () {
        lastBalance = tabLeaveBalance + ((Date.now() - tabLeave) / 2) * parseFloat(data.user.profit_sec);
    });
    
    window.setInterval(function() {
        addUserBalance(parseFloat(data.user.profit_sec));
    }, 10);
} 
}




</script>

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>    
  


    </body>
    </html>
básicamente meter tu script json dentro de una función:
function prueba(){

//Aquí el JSON

}
y después ejecutar la función prueba() dentro del loop de 1000ms que tienes arriba ya que cada vez que refrescas el json tiene que vover a capturar los nuevos valores no??

esto es lo que obtienes:
json
sin errores, espero que te sirva salu2
2
Puntos
Por alber hace 72 meses
Administrador
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate