jQuery, ajax avec méthode POST n'envoie aucun paramètre uniquement sous Firefox
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:
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:
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:
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