Comment obtenir des données à partir d'une URL externe en jQuery?
var resturl = "http://example.com";
cj.getJSON(
resturl + "&callback=?",
function(data)
{
console.log( data );
}
);
Ma fonction de callback n'est appelé. Des idées?
- Avez-vous vérifié si la demande aboutit?
- Test de la page avec firebug, il va montrer le problème.
Vous devez vous connecter pour publier un commentaire.
Deux choses ici:
D'abord votre URL additon devrait être
"?callback=?"
car il n'y a pas d'autre de la chaîne de recherche, ou utiliser la totalité de la$.ajax()
appel avec unjsonp
type de données de sorte qu'il ajoute la chaîne de requête en tant que de besoin, comme ceci:Deuxième, le domaine vous allez a à l'appui de JSONP.
Rappelez-vous que jquery est d'aller pour l'exécution de votre fonction de rappel qu'une fonction, de sorte que vous avez à faire assurez-vous que le JSON renvoyé par votre serveur est enveloppé comme un rappel.
Voici un simple exemple de travail.
Javascript:
somegreatapplication.php
Avis que le PHP ne sera pas de retour Brut code JSON comme vous avez probablement l'habitude d', mais en fait revenir à la fonction de rappel, y compris le JSON. jQuery va transformer votre URL en quelque chose comme ceci:
http://www.someserver.com/somegreatapplication.php?callback=jsonp1283446768493&_=1283446768526
Votre PHP serait alors la sortie de ce:
Qui obtient exécuter, puis l'objet est disponible au sein de votre getJSON( ... function(){} );
Tout cela suppose bien sûr que vous êtes de contrôle des deux extrémités de la communication. Si vous ne le faites pas, alors vous devez vous assurer que l'autre extrémité est de vous donner la bonne JSONP de sortie (vous pouvez avoir besoin d'utiliser un particulier nommé rappel si ils forcent qu')
$.getJSON( menuURL, function(data) {
devrait être$.getJSON( myURL, function(data) {
Cela devrait fonctionner aussi longtemps que le serveur envoie les données et utilise JSONP
Selon la documentation de la fonction de rappel n'est exécuté qu'en cas de succès. Si la demande en général peut avoir échoué. L'URL est construite aussi n'a pas vraiment contenir une chaîne de requête valide. Vous commencez la chaîne de requête avec un
?
, mais votre URL ne contient qu'un&
qui indique supplémentaire paramètres de chaîne de requête:http://api.jquery.com/jQuery.getJSON/
Mais je ne suis pas sûr si le complément d' JSONP option de change quelque chose au sujet de cette politique.