Foros del Web » Programando para Internet » Jquery »

[Ayuda]Problemas con la API de Soundcloud

Estas en el tema de [Ayuda]Problemas con la API de Soundcloud en el foro de Jquery en Foros del Web. Hola a todos: En primer lugar quiero daros las gracias por crear una comunidad en español dedicada al desarrollo web y demás temas relacionados, es ...
  #1 (permalink)  
Antiguo 16/12/2013, 13:58
Avatar de cgrs  
Fecha de Ingreso: noviembre-2013
Ubicación: Salamanca
Mensajes: 2
Antigüedad: 10 años, 4 meses
Puntos: 0
Exclamación [Ayuda]Problemas con la API de Soundcloud

Hola a todos:
En primer lugar quiero daros las gracias por crear una comunidad en español dedicada al desarrollo web y demás temas relacionados, es un alivio no tener que buscar las soluciones en stackexchange y traducirlas. Enhorabuena por este gran foro y todo el trabajo que conlleva.

En segundo lugar, voy a exponer mi situación, en la que actualmente estoy en punto muerto:
  • IDEA: Crear un reproductor de SoundCloud personalizado (con la API de SoundCloud)
  • PLANTEAMIENTO: Uso de jQuery (obligado por la API) para obtener los datos desde peticiones JSON y poder manipularlos para darles forma de reproductor. Esto lo hago porque no quiero utilizar el reproductor flash/HTML5 por defecto de Soundcloud. Utilización de las mínimas peticiones a la API para no sobrecargar el servidor.
  • CÓDIGO:
    Código:
    (index.html)
    
    <html>
        <meta charset="utf-8">
    <head>
    <title>Soundcloud Widget Test</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="//connect.soundcloud.com/sdk.js"></script>
    
    <style>
    body{
    	font-family: monospace;
    }
    a{
    	color: #fff;
    	text-decoration: none;
    }
    ul{
    	list-style-type: none;
    }
    #time{
    	float: right;
    }
    </style>
    </head>
    <body style="background-color:black;color:white;">
    	<div id="tracklist">
    		<ul id="tracks">
    		</ul>
    		<p><a href="http://soundcloud.com/whycharlie/tracks" target="_blank">More...</a></p>
    	</div>
        <script src="index.js"></script>
    </body>
    </html>
    
    (index.js)
    
        var connect = function (client_id) {
            SC.initialize({
                client_id: client_id // client_id: '3ede5934440610feb63976973c0f3375' MINE!
            });
        };
        var getTracks = function (userid, data) {
            data.splice(0,1);
            SC.get('/users/' + userid + '/tracks', {limit: 5}, function (tracks) {data.push(tracks); });
        };
        var secDec = function (s) {
            var mins = ~~(s / 60);
            var secs = s % 60;
            var hrs = ~~(s / 3600);
            var mins = ~~((s % 3600) / 60);
            var secs = s % 60;
            var ret = "";
            if (hrs > 0)
        		ret += "" + hrs + ":" + (mins < 10 ? "0" : "");
                ret += "" + mins + ":" + (secs < 10 ? "0" : "");
                ret += "" + secs;
            return ret;
        };
        var userid = '4188617'; /*whycharlie: '64308056'*/ //User ID
        var trackList = [];
        connect('YOUR_CLIENT_ID');
    $(document).ready(function(){
            getTracks(userid, trackList);
            $.each(trackList[0], function(i, track){
                alert(i+track.title); //aquí el error
            });
    });
    
  • PROBLEMA: "Uncaught TypeError: Cannot read property 'length' of undefined " (jquery.js:7115)
    Creo que puede ser debido a que el array trackList no contiene datos en el momento en que es procesado el código, pero no consigo resolverlo.

Dados estos datos, espero que me podáis ayudar para resolver mi incidencia.

PROS: He conseguido reducir el número de peticiones de la API a una. Esa petición se guarda en un array con todos los datos necesarios para crear el reproductor.
CONTRAS: El problema esencial está en que la obtención de los datos se realiza después de la ejecución del código, por lo que el array siempre está vacío en el momento de ejecución. Lo curioso es que la función getTracks es anterior al bucle que me da el error.

Espero vuestras respuestas impaciente, y disculpad por las molestias.
  #2 (permalink)  
Antiguo 16/12/2013, 14:13
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 6 meses
Puntos: 397
Respuesta: [Ayuda]Problemas con la API de Soundcloud

Para evitar tu problema debes de usar callbacks. Mira esto

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #3 (permalink)  
Antiguo 16/12/2013, 14:25
Avatar de cgrs  
Fecha de Ingreso: noviembre-2013
Ubicación: Salamanca
Mensajes: 2
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: [Ayuda]Problemas con la API de Soundcloud

Mecagüenlaleche muchisisísimas gracias, era tan simple que ni se me había ocurrido, en serio, van a ir unos creditazos en el js para ti como una casa ;)

Aunque ahora que me fijo, no me evito el tener que realizar más de una petición a la API, que era otra cuestión, pero si algo funciona, déjalo como está x)

Última edición por cgrs; 16/12/2013 a las 14:37

Etiquetas: api, undefined
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:06.