IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

jQuery, ajax avec méthode POST n'envoie aucun paramètre uniquement sous Firefox


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 21
    Par défaut 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 : 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

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    regarde au niveaui de jquery si tu as bine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    de plus post doit etre en minuscules

    et le form avoir un name ... id ne suffit pas
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 21
    Par défaut
    Merci de ta réponse rapide SpaceFrog.

    Oui, il y est par défaut de toute manière.
    Et j'ai même testé de le forcer dans mon appel à la fonction $.ajax mais sans succès.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $.ajax({
    		type: "POST", 
    		url: "/WIZ/test",
    		data: "test=fonctionne",
    		dataType: "html",
     
    		//paramètre par défaut que j'ai forcé, mais aucun changement ...
    		contentType: "application/x-www-form-urlencoded", 
     
    		success: function(doc) {
    			$('body').html(doc);
    		}
    	});
    Mon formulaire n'est pas en cause, il est juste là pour vous montrer qu'en utilisant un formulaire avec la méthode 'post' ça fonctionne, alors que ma requête ajax avec la méthode 'post' elle ne fonctionne pas sous FF.
    C'est juste une preuve que ma servlet n'est pas en cause - tout du moins c'est l'impression que ça me donne -.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Salut,
    Citation Envoyé par SpaceFrog
    de plus post doit etre en minuscules

  5. #5
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 21
    Par défaut
    en effet andry.aime, la documentation officielle de jQuery préconise de mettre le type en majuscule, j'ai essayé en majuscule et minuscule et ça n'a rien changé.

    D'ailleurs, même l'appel suivant me pose exactement le même problème sous FF:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $.post(	"/WIZ/test", 
    	"test=fonctionne",
    	function(doc) {
    		$('body').html(doc);
    	},
    	"html");

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    et le name ???
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $.post("/WIZ/test", 
    	{test:"fonctionne"},
    	function(doc) {
    		$('body').html(doc);
    	},
    	"html");
    Tu peux nous dire l'erreur retourner?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. jquery ajax avec mvc
    Par mvc_dev dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 28/04/2011, 10h06
  2. WebService REST avec méthode POST
    Par tetsu no tama dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 18/04/2011, 16h19
  3. [PHP 5.1] Redirection avec méthode POST
    Par richard_sraing dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2010, 18h10
  4. [JQuery] ajax avec Firefox
    Par elvan49 dans le forum jQuery
    Réponses: 2
    Dernier message: 17/12/2007, 12h21
  5. Réponses: 3
    Dernier message: 07/03/2005, 15h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo