Vous CANNOT faire une demande inter-domaines (GET/POST/etc) avec un XMLHttpRequest (alias AJAX).
Ce que vous pouvez faire, lorsque le serveur le prend en charge, est de faire une requête JSONP. Une demande JSONP fonctionne comme suit:
- jQuery crée une fonction globalement accessible de la fonction de rappel que vous fournissez comme argument
- Au lieu d'utiliser XMLHttpRequest (AJAX) pour faire la requête HTTP, jQuery insère dynamiquement un SCRIPT balise dans le DOM
- le SRC de la balise de script est l'URL de la requête à laquelle vous essayez de communiquer
- jQuery ajoute un rappel à la chaîne param de requête comme ceci: example.com/someurl.js?callback=someDynamicallyGeneratedMethodName
- Il est alors en place au serveur pour retourner JavaScript que votre client peut utiliser en passant le résultat JSON comme argument pour someDynamicallyGeneratedMethodName
Si vous avez aucun contrôle du serveur que vous envoyez des messages, alors vous êtes hors de la chance, JSONP gagné Ne te fais pas beaucoup de bien. Quel que soit le retour du serveur sera dans une balise SCRIPT, et sera probablement jeter une erreur si elle n'est pas formatée correctement.
Pour plus d'informations à ce sujet, je vous suggère de regarder la fonction $ .ajax de base au lieu des raccourcis. (Dans la documentation de jQuery sous Ajax. Désolé je ne peux pas poster plus de liens)
Encore une fois, si vous n'avez pas le contrôle du serveur auquel vous envoyez des messages, vous devriez peut-être chercher un proxy si possible. Sinon, un IFRAME peut être votre seule autre option. Il existe également une méthode pour y parvenir avec un objet SWF (flash). J'ai essayé non plus, mais ils sont des solutions de contournement aux limitations de l'objet XMLHttpRequest.
J'espère que je pourrais vous aider!
+1. Super article, et bienvenue à SO! – aolde
Merci pour l'explication. C'est beaucoup plus clair après une heure Googling. J'ai accès au serveur sur lequel je poste, donc tout va bien. –
Err, c'est quoi ce commentaire lié au sujet? Cela ne couvre pas le POST que l'ergothérapeute demande spécifiquement! – HRJ