Je suis désolé si mon anglais est pas parfait, comme je vois que je n'étais pas assez clair ... Un de mes principales préoccupations est expliquée par une autre personne ici: http://http://forum.jquery.com/topic/cross-domain-ajax-and-ie
Alors, quelle alternative existe?
1) XDomainRequest
Personnellement, je pense que c'est la meilleure façon de mettre en œuvre les scripts inter-site dans IE8 + (comme il est pris en charge en mode natif). Le seul problème est que c'est un moyen Microsoft uniquement. Mais comme beaucoup d'autres choses avec la famille IE, nous pouvons facilement étendre la fonctionnalité ajax JQuery. Selon la documentation, vous devrez spécifier certains en-têtes supplémentaires dans domain1.tld, for example, in PHP comme ceci:
header("Access-Control-Allow-Origin: http://domain2.tld"); //use * for any
Peut-être que la prochaine alternative est utile de prévoir la mise en œuvre de jquery de XDomainRequest;
Mise à jour (a): Il y a un XDR library (non jquery) qui "remplacer" la classe XHR pour le rendre multi-navigateur, il est basé à pmxdr client library. Je n'ai pas encore essayé.
2) CORS
Le seul problème avec ce plugin est qu'il est pas exactement une extension que ses fonctions sont nommés différemment, de sorte que vous devez soit modifier vos codes ou enveloppez ce plugin.
Mise à jour (b): J'ai modifié le plugin CORS pour le rendre plus facile. Vérifiez mon autre réponse pour obtenir le code.
3) JsonP in JQuery
Cela devrait être la meilleure façon de résoudre mon problème (comme je l'ai contrôle des deux serveurs). Nativement, la plupart des navigateurs prennent en charge les scripts inter-sites, uniquement si le format json est utilisé (je crois que xml peut également être utilisé). Dans ce cas, la fonction $ .getJSON() est utilisée. Pour le faire fonctionner, vous devez spécifier (comme l'indique la documentation) callback =? dans l'URL, par exemple:
$.getJSON("http://domain2.tld/index.php?callback=?",funciton(res){ ... });
Le "?" après « callback » sera remplacé par un identifiant ... dans votre fichier php, vous devez obtenir cet identifiant et entourer le code JSON comme ceci:
print_r($_GET["callback"])."(".json_encode($mydata).");";
(je suis arrivé cet exemple de here)
Le problème avec cette méthode est que si vous voulez récupérer uniquement le HTML, il doit résider dans un objet json et rendre ainsi le processus un peu plus compliqué et écrasant.
4) jquery.jsonp plugin
Si vous avez besoin des fonctionnalités supplémentaires et des validations au support natif JSONP dans JQuery, essayez ce plugin qui simplifiera aussi le processus.
5) xdomainajax
Ce plugin utilise une aproche intéressante en utilisant le service de Yahoo YQL, dans lequel une page Web (ou une partie de celui-ci) peuvent être convertis en JSON, permettant d'importer dans javascript. Cette méthode est bonne pour les situations dans lesquelles vous ne pouvez pas modifier le format d'origine.
6) flXHR
Cette solution utilise le flash (swf) pour obtenir la magie. Je pourrais dire que c'est un moyen très rapide de réaliser une implémentation totalement cross-browser (car elle repose sur le support flash). Cette méthode peut être idéale pour les sites dans lesquels le flash sera présent (à coup sûr). Toutefois, si votre site ne nécessite pas de flash, alors cela devient le principal inconvénient que les utilisateurs devraient avoir flash installé pour que cela fonctionne.
7) xdajax
Cette solution est basée sur la mise en œuvre de YUI ainsi que l'approche "Flash". 8) Si aucune des options précédentes ne vous convient, rappelez-vous que vous pouvez toujours utiliser l'ancienne astuce de l'insertion d'une balise pour importer du code JS.
9) Réduire au minimum la sécurité d'IE pour résoudre le problème. Mais je pense qu'il ne sera pas bon d'avoir un message comme celui-ci: "Veuillez baisser vos paramètres de sécurité pour utiliser ce site" ... lol
J'espère que cela peut aider les autres dans une situation similaire.
Merci pour ça! Cependant, en utilisant ceci pour un peu d'un cas de bordure récemment, j'ai découvert qu'il casse légèrement la fonctionnalité native de '$ .get' et' $ .post', qui renvoient chacun un objet jqXHR. Ceci est facilement corrigé en modifiant les blocs try dans votre code pour lire 'return $ ._ get (url, données, callback, type);' et 'return $ ._ post (url, data, callback, type);' – itsmequinn