Bonjour,
Pourrait-on m'expliquer pourquoi sur ces versions d'IE, l'exécution d'un php appelé par un objet XMLHttpRequest() ne peut pas faire fonctionner une simple requête update?
Bonjour,
Pourrait-on m'expliquer pourquoi sur ces versions d'IE, l'exécution d'un php appelé par un objet XMLHttpRequest() ne peut pas faire fonctionner une simple requête update?
Nous pas pouvoir faire magie sans exemple de code ?
As-tu des erreurs dans ton JS qui s'affichent dans ta console ?
As-tu lancé le mode débug et vu ce qu'il se passe ?
php s'executant coté serveur, la version du navigateur n'est pas en cause au niveau de l'execution du php !
Maintenant, ajax étant du js, il est possible que ton code js ne soit pas compatible avec le navigateur...
Encore faut il VOIR ce code afin d'en juger ...
Bonjour,
à voir pour les anciennes version IE About Native XMLHTTP.
J'ai greffé les tests de compatibilité IE/other et fait fonctionner tout ça sur ff sans problème. J'ai essayé de réduire le code le plus possible il me reste tout ça, et ça continue de ne pas fonctionner sur IE<9.
start.html :
handlingData.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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <title>page start up</title> </head> <body> <p>pour html 5</p> <span id="clickme"> cliquer ici </span> </body> <script> function getXMLHttpRequest() { var xhr = null; if (window.XMLHttpRequest || window.ActiveXObject) { if (window.ActiveXObject) { try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { xhr = new XMLHttpRequest(); } } else { alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest..."); return null; } return xhr; } function request(callback) { var xhr = getXMLHttpRequest(); alert('requesting'); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) { callback(xhr.responseText); } }; var sVar1 = encodeURIComponent(numeroItem); // encode pour protéger la variable xhr.open("GET", "handlingData.php?item=" + sVar1, true); // true pour asynchrone, false pour synchrone xhr.send(null); } var lireData = function readData(sData) { alert(sData); } function addEvent(element, event, func) { if (element.addEventListener) { // pour ff et autres element.addEventListener(event, func, false); } else { // pour IE<9 element.attachEvent('on' + event, func); } } var clicking = function (){ numeroItem = 3; request(lireData); // appel d'une fonction gérant le callback alert('ok'); } var element = document.getElementById('clickme'); addEvent(element, 'click', clicking); </script> </html>
Peut être que IE n'aime pas les $ sans les "'" pour les requêtes sql?
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 <?php header("Content-Type: text/plain"); // Utilisation d'un header pour spécifier le type de contenu de la page. Ici, il s'agit juste de texte brut (text/plain). //identifiants //identifiants if ($_SERVER["REMOTE_ADDR"]=='127.0.0.1') { $adresse='localhost'; $nom='root'; $motdepasse=''; $database='hypoc'; } else { // naméo! } mysql_connect($adresse, $nom, $motdepasse); mysql_select_db($database); $itemOk = (isset($_GET["item"])); if ($itemOk) { $item = $_GET["item"]; $points1 = array(3,0); $points2 = array(4,0); $points3 = array(5,0); $points4 = array(5,0); $userPoints1 = 0; $userPoints2 = 0; $userPoints3 = 0; $userPoints4 = 0; if (in_array($item, $points1)) $userPoints1 = 1; if (in_array($item, $points2)) $userPoints2 = 1; if (in_array($item, $points3)) $userPoints3 = 1; if (in_array($item, $points4)) $userPoints4 = 1; mysql_query("UPDATE users SET userPoints1=userPoints1+$userPoints1, userPoints2=userPoints2+$userPoints2, userPoints3=userPoints3+$userPoints3, userPoints4=userPoints4+$userPoints4 WHERE userNom='nomTest'") or die(mysql_error()); $points = mysql_query("SELECT userPoints1, userPoints2, userPoints3, userPoints4, userPointsMedia FROM users WHERE userNom='nomTest'"); $tableauPoints = mysql_fetch_array($points); $contenu = 'points1 : '.$tableauPoints['userPoints1'].' '.'points2 : '.$tableauPoints['userPoints2'].' '.'points3 : '.$tableauPoints['userPoints3'].' '.'points4 : '.$tableauPoints['userPoints4'].' item : '.$item.' userpoints1 : '.$userPoints1; echo $contenu; } else { echo "FAIL"; } ?>
Moi aussi ça me laisse sans voix...
Oui donc anyway tout ça ça marche sur ff et pas sur IE. Ça viendrait de ajax.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager