Bonjour,

J'ai un problème assez étrange avec jQuery 1.3.2, c'est même le monde à l'envers car tout fonctionne avec IE mais pas avec Firefox.

Le problème:
Je vais donc vous expliquer le problème que j'ai avec FF.
  • Toutes requêtes Ajax avec la méthode POST n'envoie pas de paramètres.
  • Alors qu'avec la méthode GET tout fonctionne.



Le contexte:
Pour vous situer le contexte, le serveur web utilise:
  • EAServer 4.2
  • Les servlets + JSP (ici mon protocole de test se limite aux servlets)
  • jQuery 1.3.2 (testé aussi avec la nightly build 1.3.3 et la 1.2.6 sans succès)


Le navigateur web: Firefox 3.5 finale ou 3.0.11 (même comportement)


Le code:

Voici mon protocole de test:
Tout d'abord le servlet me servant de test.
Le servlet retourne tout simplement le code html suivant ' <h1>test :</h1>PARAM ' où PARAM est le paramètre de nom 'test' envoyé indifférement en post ou en get.
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
 
public class TestServlet extends HttpServlet {
 
    /* doGet appel doPost */
    public void doGet(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {
	doPost(req,res);
    }
 
    public void doPost(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {
	/*je récupère le parametre 'test'*/
	String paramTest = req.getParameter("test");
 
	/* Je vais envoyé un document html */
	res.setContentType("text/html");
	PrintWriter out = res.getWriter();
	/* Je retourne le contenu de <paramTest>*/
	out.println("<h1>test :</h1>" + paramTest);
    }
}
Ensuite ma page web me servant de test:
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
 
<html>
<head>
<title>
	Test du javascript
</title>
<script type="text/javascript" language="Javascript" src="jquery.js"></script>
<script language="JavaScript">
function requeteAjax(){
	  $.ajax({
		type: "POST", 		//avec GET ça fonctionne sans PB
		url: "/WIZ/test",	//C'est l'url pour executer ma servlet
		data: "test=fonctionne",	//les paramètres sont correctements saisies car ça fonctionne en GET
		dataType: "html",	//J'attend un document html en réponse à ma requete Ajax
		success: function(doc) {
			$('body').html(doc);	//Je remplace le body de la page avec le résultat de la requete
		}
	});
}
</script>
</head>
<body>
 
<!-- Appel de la requête ajax qui me pose un PB uniquement sous firefox et uniquement avec la méthode POST -->
<input type="button" value="Envoie de données avec ajax  en post" onclick="javascript:requeteAjax();"/>
 
</body>
</html>
Avec firefox et la méthode POST je me retrouve avec la page suivante:

test :
null


Alors qu'avec IE ou firefox avec la méthode GET je me retrouve avec la page suivante:

test :
fonctionne


Mes tests:
J'ai tout simplement vérifié que ma servlet n'était pas en cause en réalisant un simple formulaire envoyé en POST.

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
 
<html>
<head>
<title>
	Test du javascript
</title>
</head>
<body>
<!-- Un formulaire envoyé en post qui fonctionne parfaitement, pour vour prouver que la méthode POST fonctionne bien dans mon servlet -->
<form name="formulaireDeTest" action="/WIZ/test" method="post">
	<input type="hidden" name="test" value="fonctionne"/>
	<input type="submit" value="Envoie de données sans ajax en post"/>
</form>
</body>
</html>
Les données sont bien envoyé à ma servlet et j'obtiens bien la page

test :
fonctionne


Les conclusions:
  • La servlet semble ne pas être en cause
  • La syntaxe de l'appel jQuery semble correct car ça fonctionne sous IE
  • Pourquoi uniquement la méthode POST ne transmet pas les paramètres et ce uniquement sous FF ?
  • Et pourquoi juste le passage de paramètres merde ?



Je ne sais pas quoi faire, et je ne vois pas d'où viens le problème.
Merci de votre aide par avance