Bonjour à tous,
Pour les besoins d'un client, je suis en train de créer une interface qui fait des appels Ajax sur des pages PHP hébérgées sur l'un de nos serveurs (le script qui fait les appels Ajax est également hébérgé sur notre serveur et inclut dans la page HTML finale).
Tout fonctionne très bien sur Firefox et chrome, en revanche quand je test avec IE j'obtient une erreur "[Object error]" que je n'arrive pas à résoudre, j'ai essayé pas mal de choses, notamment le :
Afin de permettre à IE d'effectuer des requêtes Ajax cross-domain mais ca ne change rien et la je n'ai plus vraiment de pistes...
Code : Sélectionner tout - Visualiser dans une fenêtre à part $.support.cors = true;
Voici le code de la requête Ajax :
Et le code de la page ajax.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 function addItem(key, val) { $.ajaxSetup({ cache: false }); $.ajax({ type: "POST", url: "http://notre-vhost.com/ajax.php?type=add&var=" + key, async: false, data: "val=" + val, dataType : 'html', timeout: 20000, error: function(XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest + " - " + textStatus + " - " + errorThrown); }, success: function(result){ alert('ok'); } }); }
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 header("Access-Control-Allow-Origin: *"); echo 'ok';exit;
Sous firefox et chrome aucun problème, en revanche avec IE 9 j'obtient :Quelqu'un à déjà eu le même souci ?"[object Object] - error - [object Error]"
Merci d'avance
EDIT : Bon j'ai finalement réussi avec un hack IE, pour ceux que ca intéresse :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 var urlToLoad = "http://notre-vhost.com/ajax.php?sessionId=" + sessionId + "&type=add&var=" + key + "&val=" + val; if ($.browser.msie && window.XDomainRequest) { // Use Microsoft XDR var xdr = new XDomainRequest(); xdr.open("GET", urlToLoad); xdr.onload = function() { updateCount(); }; xdr.send(); } else { $.ajax({ type: "GET", url: urlToLoad, async: true, timeout: 20000, error: function(readyState, status, statusText, responseText) { console.log(readyState + " - " + status + " - " + statusText.description + " - " + responseText); }, success: function(result){ updateCount(); } }); }
Partager