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.
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 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); } }
Avec firefox et la méthode POST je me retrouve avec la page suivante:
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>
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.
Les données sont bien envoyé à ma servlet et j'obtiens bien la page
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>
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
Partager