2010-01-24 7 views
4

Il semble que je ne puisse pas passer d'appel en dehors du nom de domaine actuel avec "AJAX". Mais je suis en mesure d'appeler l'API Twitter (avec JSON) dans JQuery ... ne sont pas tous les deux en utilisant l'objet XMLHTTP? Si oui (ou non), pourquoi suis-je capable d'appeler un autre nom de domaine avec JSON (en utilisant JQuery) mais pas avec AJAX? Quelle est la différence entre Ajax et JSON de toute façon?AJAX VS JSon "Sécurité intégrée entre domaines" Question

Répondre

7

L'API twitter utilise JSONP, qui n'utilise pas XMLHTTPRequest, mais utilise une balise <script> pour inclure le javascript "étranger". Ce script appelle alors une fonction dans votre propre javascript.

L'intégration de Google Maps sur des sites tiers ne serait pas possible sans ce «hack» (c'est en fait ce que c'est: un hack).

est ici plus d'informations sur JSONP:

http://ajaxian.com/archives/jsonp-json-with-padding

ou dans l'article wikipedia sur JSON:

http://en.wikipedia.org/wiki/JSON#JSONP

+0

Aaah .. c'est logique! Merci! – mrmuggles

0

JSON est un format de fichier, alors que AJAX est une technique en JavaScript pour envoyer et recevoir des données du serveur Web après le chargement de la page. Le X dans AJAX est pour XML (aussi un format de fichier) qui est une alternative à JSON, mais c'est un peu un abus de langage, car beaucoup de choses que les gens appellent AJAX n'utilisent pas du tout le langage XML.

Le lien de M. LeyBaert sur JSONP est très utile pour expliquer pratiquement ce qui se passe dans l'API Twitter; Ce n'est pas du tout XMLHTMLRequesting, il y a juste une autre balise de script qui pointe vers un fichier javascript sur le site web de twitter, qui est alors chargée avec le reste de votre page, quand la page est chargée pour la première fois.

Vous pouvez faire avancer les choses soignées grâce à cela, mais je ne pense pas que vous pouvez le faire après la page est chargée (comme AJAX) à moins que vous commencez à vous embêter avec iFrame cachés ou similaires. Si vous avez vraiment besoin d'obtenir des éléments de style AJAX sans XMLHTTPRequests, c'est ce que vous voulez regarder; ajouter dynamiquement un IFrame au document qui référence une page qui demande un script (ou similaire) à partir d'un autre site. Il y a une discussion sur les avantages et les inconvénients de ce here.

+0

Il est parfaitement possible de le faire après le chargement d'une page. Si vous utilisez jQuery, c'est très facile à faire et fonctionne dans tous les navigateurs. En fait, Google Maps fait tout ce qu'il faut pour communiquer avec le serveur via JSONP, et tout est fait après le chargement de la page. –

+1

PimTerry, il est parfaitement possible d'insérer dynamiquement une balise '