14 novembre 2014
publié par 
Les fonctions JSONExécute et JSONExécuteExterne permettent via une url d'obtenir d'un serveur des données au format JSON (JavaScript Object Notation).

Dans le cas général le serveur donne directement la réponse et se trouve sur le domaine qui héberge le site. C'est la fonction JSONExécute qui permet directement d'obtenir la réponse.

Il est également fréquent d'interroger un serveur d'un autre domaine (un service de Google par exemple), qui va attendre un paramètre permettant la mise en place d'un mécanisme de "callback". C'est alors la fonction JSONExécuteExterne qui permet d'obtenir la réponse JSON.


Un cas supplémentaire peut se produire : le serveur à contacter retourne une réponse directe sans attendre de paramètre avec le nom d'une "callback", et ce serveur n'est pas dans le domaine. Dans ce cas précis, c'est à nouveau la fonction JSONExécute qui devra être utilisée, et non pas JSONExécuteExterne. En effet, JSONExécuteExterne impose l'utilisation d'un paramètre elle n'est pas adaptée, en revanche JSONExécute peut faire un appel vers un autre domaine, à condition que le serveur cible l'autorise via une entête (header) http supplémentaire : "Access-Control-Allow-Origin" adaptée.

Si la fonction JSONExécuteExterne est utilisée pour tenter d'obtenir une réponse d'un serveur qui n'attend pas de paramètre, en fonction du navigateur une erreur sera obtenue :
  • Chrome : Failed to execute 'send' on 'XMLHttpRequest' : Failed to load <url>
  • IE : Erreur lors de l'envoi de la requête : NetworkError

Liens utiles pour cerner ces mécanismes :


< Retour

Publier un commentaire : 
Votre adresse email ne sera pas publiée