2010-03-09 4 views
2

J'ai besoin d'accéder aux données sur un sous-domaine J'ai essayé d'utiliser JSONP pour lequel jQuery a un support. Les données auxquelles j'accède sur le sous-domaine sont un fichier statique (régénéré) .json (http://www.example.com/data.json)jQuery + JSONP renvoie les données vides?

Je rencontrais des erreurs "Erreur d'étiquette non valide" et j'ai réalisé que les données devaient être enveloppées entre parenthèses et utilisées? =?

http://www.example.com/data.json?callback=? 

({ 
"items": [ 
{ 
    "url": "http://www.example.com", 
    "id": "2981", 
     "title": "title", 
    "description": "lorem ipsum sit dolor", 
    "start": "00:10:00", 
    "end": "00:20:00" 
} 
}) 


$.getJSON(url, function(data){ 
console.log("json: " + data); 
}); 

Enveloppement des données() a travaillé comme je suis maintenant en mesure de voir les données renvoyées dans l'onglet NET de Firebug, mais le .getJSON $ ne retourne rien, je ne pense pas qu'il tire .

Qu'est-ce qui me manque? Est-ce que quelque chose de plus doit être fait côté serveur?

Merci!

+0

Que voulez-vous dire quand vous dites qu'il ne retourne rien? Le paramètre "data" est-il nul? – Pointy

Répondre

0

Le code que vous renvoyez de la requête HTTP est en cours d'exécution par le navigateur.

Le navigateur l'exécute correctement, mais il ne sait pas où le placer car il n'est affecté à rien.

Heureusement jQuery est assez intelligent, et vous utilisez un paramètre (callback = ?) pour vous d'utiliser dans votre code.

Votre langage côté serveur doit ajouter que le paramètre de rappel et faites votre réponse JSON ressemble à un appel de fonction JavaScript:

<?php echo $_GET["callback"]?>({ 
"items": [ 
{ 
    "url": "http://www.example.com", 
    "id": "2981", 
     "title": "title", 
    "description": "lorem ipsum sit dolor", 
    "start": "00:10:00", 
    "end": "00:20:00" 
} 
}) 
+0

Est-ce que "callback" sera ajouté avant la parenthèse? – Gregory

0

si vous essayez de valider vos données JSON par exemple sur vous http://jsonlint.com/ voyez qu'il ya quelques les erreurs.

Générez-vous les données JSON par un framework ou manuellement.

La génération manuelle de données JSON est sujette aux erreurs. J'espère que cela vous aidera à corriger votre erreur.

Martin