Depuis ses dernières version, Internet explorer bloque les appels vers un autre domaine via des requêtes en ajax par défaut.
Il faut utiliser l’objet : XDomainRequest() pour appeler un domaine externe.
Pour ne pas être obligé de modifier toutes ses requêtes Jquery, il suffit de tester en début de script.
Si votre navigateur utilise XDomainRequest(), modifier simplement les options natives de Jquery :
1 2 3 4 5 6 7 | if ('XDomainRequest' in window && window.XDomainRequest !== null) {
jQuery.ajaxSettings.xhr = function() {
try { return new XDomainRequest(); }
catch(e) { }
};
jQuery.support.cors = true;
} |
Ce qui peut donner un code du genre :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | if ('XDomainRequest' in window && window.XDomainRequest !== null) {
jQuery.ajaxSettings.xhr = function() {
try { return new XDomainRequest(); }
catch(e) { }
};
jQuery.support.cors = true;
}
$.ajax({
type: "GET",
url: "http://www.domaineexterne.com/fichier.php",
data:"variable1="+v1+"&variable2="+v2,
cache: false,
async: false
}); |
A rajouter aussi dans les premières lignes du fichier qu’on appelle (ça peut faciliter les choses…) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //autorisation requete ajax distante header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: POST, GET, OPTIONS'); header('Access-Control-Max-Age: 1000'); if(array_key_exists('HTTP_ACCESS_CONTROL_REQUEST_HEADERS', $_SERVER)) { header('Access-Control-Allow-Headers: ' . $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']); } else { header('Access-Control-Allow-Headers: *'); } if("OPTIONS" == $_SERVER['REQUEST_METHOD']) { exit(0); } |