Bonjour
Je connais quelques difficultés avec AJAX. Concrêtement, j'ai deux problèmes :
Le 1er prob, c'est en utilisant, la méthode POST, pour ouvrir une communication assynchrone.
Quand j'exécute mon fichier.html avec IE8, il me met une erreur javascript,
Note : Erreur non spécifié, c'est la ligne du setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Tandis que avec Firefox, il n'y a pas d'erreur. Je précise qu'avec la méthode GET, je n'est pas de soucis, tout fonctione.
Voici le code du fichier ajax-php-post.html
J'ai essayé aussi encodeURIComponent à la place de escape, j'ai essayé aussi de mettre un charset dans le setRequestHeader(), mais ça ne change rien.
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 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="FR"> <head> <title>Ajax-php-POST</title> <script type="text/javascript" src="creation-requete-ajax.js"></script> <!-- Style de la div --> <style type="text/css"> #maDiv{ background-color:yellow; with:200pt; } </style> <!-- Script AJAX qui récupère un fichier text est le met dans une div --> <script type="text/javascript"> function getResponseText(){ //Création de requête HTTP var requeteHTTP = creerRequeteAjax(); //Si requête créée correctement if(requeteHTTP){ //Positionnement sur le champ titre var oTitre = document.getElementById("idTitre"); //Récupérer la valeur du champ titre oTitre = oTitre.value; //Positionnement sur la dv var oDiv = document.getElementById("maDiv"); //Définir la méthode d'envoie de la requeête et le type de communication requeteHTTP.open('POST','ajax-php-post.php',true); //Appel de la fonction callback, lorsque que le serveur renvoie une réponse requeteHTTP.onreadystatechange = function () { //Test l'état d'avacement de la requête et les ressouces disponibles if((requeteHTTP.readyState == 4) && (requeteHTTP.status == 200)){ //Modifier le contenu de la DIV //Définir l'entête HTTP requeteHTTP.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //Modifier la valeur de la div oDiv.innerHTML = requeteHTTP.responseText; } } //Définir les paramètres du send var params = "titre=" + oTitre; params = escape(params); //Envoie de la requête requeteHTTP.send(params); } } </script> </head> <body> <h1>REQUET AJAX AVEC PHP </h1> <h2>Utilisation responseTexte avec un fichier php</h2> <h4>Méthode POST</h4> <div id="maDiv"> <form form="frmTest"> <input id="idTitre" name="txtTitre" type="text" size="10"/> <input name="bttGo" type="button" value="GO" onclick="getResponseText();"/> </form> </div> </body> </html>
2ème problème dans le fichier ajax-php-post.php
Je ne n'arrive pas à récupérer, le paramètre que j'envoie dans le send, avec Firefox,
Je voudrais le récupérer avec $_POST mais ça ne fonctionne pas.
J'ai une erreur php :
Notice: Undefined index: titre in C:\wamp\www\AJAX\6-ajaxPHP\php_ajax\method_POST\ajax-php-post.php on line 5
, pourtant le paramètre d'envoie se nomme titre, il ne le reconnait pas, quel est le problème
Fichier ajax-php-post.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <?php $titre = $_POST["titre"]; ?>
J'ai vraiment besoin de vos compétences, car il y a des choses que je ne saisie pas, je tourne en rond et ça devient la prise de tête, donc ça serait cool, c'est quelqu'un pourrait répondre à mes questions.
Un grand merci
dav79
Partager