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

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>
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.


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