2016-12-16 1 views
3

Dans la console, il me donne l'erreur "Uncaught SyntaxError: Jeton inattendu:", mais si j'accède directement à l'URL SoundCloud dans mon navigateur, cela donne un JSON valide. Auparavant, ce code fonctionnait bien et aujourd'hui, ce problème a commencé.L'API SoundCloud donne l'erreur "Uncaught SyntaxError: Unxpected token:"

<html> 
    <head> 
    <script src="https://api.soundcloud.com/resolve.json?url=https://api.soundcloud.com/tracks/251912676/?secret_token=s-EkyTy&amp;client_id=08f79801a998c381762ec5b15e4914d5"></script> 
    </head> 
    <body> 
    <h2>hellooo</h2> 
    </body> 
</html> 

Mise à jour:

Voici le code réel pour que je pose la question, au-dessus html je viens de créer par exemple.

SoundCloud.prototype._jsonp = function (url, callback) { 
     var target = document.getElementsByTagName('script')[0] || document.head; 
     var script = document.createElement('script'); 

     var id = 'jsonp_callback_' + Math.round(100000 * Math.random()); 
     window[id] = function (data) { 
      if (script.parentNode) { 
       script.parentNode.removeChild(script); 
      } 
      window[id] = function() {}; 
      callback(data); 
     }; 

     script.src = url + (url.indexOf('?') >= 0 ? '&' : '?') + 'callback=' + id; 
     target.parentNode.insertBefore(script, target); 
}; 
+2

Pourquoi importez-vous un fichier JSON en tant que script? JSON n'est pas JavaScript. Vouliez-vous utiliser JSONP (qui est)? – 4castle

+0

en fait cela fait partie du code que nous avons un lecteur audio personnalisé en utilisant réagissent pour soundcloud où nous obtenions réponse JSONP et tout fonctionnait bien mais à partir d'aujourd'hui l'erreur a commencé. – Saurabh

+0

Pourquoi quelqu'un donner un point négatif ici, je n'ai peut-être pas bien décrit mais quel est le problème avec la question, j'ai la fonction de rappel dans mon code. – Saurabh

Répondre

0

La balise de script suivante attend du code JavaScript dans la source et non JSON.

<script src="file.js"></script> 
0

Je suppose que vous voulez utiliser ce produit ... JSON externe

Une façon de « get » il utilise une requête asynchrone ajax comme $.get(url,callback);

appel comme un script bien sûr ...
Parce que ce n'est pas un script.

Essayez de diriger l'extrait!

var url = "https://api.soundcloud.com/resolve.json?url=https://api.soundcloud.com/tracks/251912676/?secret_token=s-EkyTy&amp;client_id=08f79801a998c381762ec5b15e4914d5" 
 

 
var json; 
 

 
$.get(url,function(result){ 
 
    json = result; 
 

 
    // show in console 
 
    console.log(JSON.stringify(json)); 
 
    
 
    // Now using it... 
 
    $("#json_usage").html(json.tag_list+" and all the "+json.permalink); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<html> 
 
\t <head> 
 
\t <!--script src="https://api.soundcloud.com/resolve.json?url=https://api.soundcloud.com/tracks/251912676/?secret_token=s-EkyTy&amp;client_id=08f79801a998c381762ec5b15e4914d5"></script--> 
 
\t </head> 
 
\t <body> 
 
     <h2>hellooo <span id="json_usage"></span> !</h2> 
 
    </body> 
 
</html>

Dans ce qui précède, est placé dans la variable json puis console connecté au json résultant.

1

J'ai eu la raison de problème, soundcloud plus tôt répondaient dans jsonp mais maintenant ils fournissent JSON même j'ai passé la fonction de rappel de JsonP. J'ai dû faire une requête ajax pour le réparer.

J'ai utilisé le code suivant pour le réparer.

var xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() { 
     if (this.readyState == 4 && this.status == 200) { 
      callback(JSON.parse(this.responseText)); 
     } 
    }; 
    xhttp.open("GET", url, true); 
    xhttp.send(); 
+0

Comment avez-vous résoudre ce problème? J'ai le même problème depuis hier. – frankie

+0

J'ai le même problème, s'il vous plaît fournir votre solution. Merci! – abla

+0

voir la mise à jour @abla – Saurabh

0

Désolé, vous avez rencontré des problèmes avec les réponses JSONP de l'API SoundCloud. Cela était dû à un bug qui est entré en production ces derniers jours. Nous venons de déployer un correctif et ce dernier renvoie désormais des réponses JSONP valides plutôt que simplement JSON, si vous spécifiez un paramètre callback. Désolé pour la confusion!