2010-12-10 4 views
1

Je suis en train de prendre un songkick json feed en utilisant le ci-dessous:dojo cross domain JSON retour en tant que script

var jsonpArgs = { 
    url: obj.url, 
    load: function(data) { 
     console.log(dojo.fromJson(data)); 
    }, 
    error: function(error) { 
     new ErrorDialog({ title: 'Error', content: error }); 
    } 
}; 
    dojo.io.script.get(jsonpArgs); 

Il charge l'amende de données, mais il retourne:

Resource interpreted as script but transferred with MIME type application/json. Uncaught SyntaxError: Unexpected token :

Ce jeton inattendu à venir à partir du contenu du fichier (ligne 1):

{ "resultsPage": 

Je suppose que c'est parce que le contenu comi ng retour n'est pas interprété comme json correctement mais je ne sais pas ce que je fais mal. J'ai essayé de spécifier le paramètre callback mais cela ne fait rien (pas jsonp?).

Des idées?

Répondre

1

Il semble que le flux ne prenne pas en charge les réponses JSONP. En regardant leur documentation modeste, je ne vois pas comment spécifier un callback (la partie cruciale de JSONP). Donc, évidemment, vous obtenez une erreur — JSONP utilise <script> pour récupérer les données, mais les données sont de type incorrect.

Une autre chose est que vous devez spécifier le paramètre jsonp, qui est le paramètre de rappel. Mais cela ressemble à un point discutable, car je ne vois pas votre service d'alimentation le supporter.

Donc, le mieux est de faire un appel côté serveur à ce service en utilisant un proxy ou quelque chose de similaire. De cette façon, vous évitez les problèmes multiplateformes et pouvez traiter directement avec JSON ou XML.