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 :

Appel fonction javascript avec variables php dans un formulaire marche en local mais pas sur le serveur


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Appel fonction javascript avec variables php dans un formulaire marche en local mais pas sur le serveur
    Bonjour,

    Voici mon code :

    Code Javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	function submitForm(nomForm, numV){
     
    		var input = '<input type="hidden" name="num_V" value="' + numV + '">';
    		document.getElementById(nomForm).innerHTML += input;
    		document.getElementById(nomForm).submit();
    	}
    Code PHP/HTML 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo '<li><a href="#" onclick="javascript:submitForm(\''.$nom_struct.$it_var.'\','.$j.');">';
    echo $nom_struct.$j;
    echo '</a></li>';

    Code PHP/HTML 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo '<li><a href="javascript:submitForm(\''.$nom_struct.$it_var.'\','.$j.');">';
    echo $nom_struct.$j;
    echo '</a></li>';
    Les solutions PHP/HTML 1 et 2 pour l'appel de la fonction Javascript fonctionnent très bien en local (sous Mozilla 3.5.3, mais pas sur IE6), par contre sur le serveur en cliquant sur les liens rien ne se passe.

    Je ne comprends pas du tout à quoi cela peut être dû.

    Merci d'avance pour votre aide.

    Fred

  2. #2
    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
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    onclick attend déjà des instructions javascript, donc vire le "javascript:"
    Peut-on voir le code HTML généré des formulaires ?

    A+.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Merci pour ta réponse !

    Code html : 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
    <form name ="CDSTAN_fin1" id = "CDSTAN_fin1" method="POST" action="Test.php" enctype="multipart/form-data">
    	<input type="hidden" name="nom_DV" value="cdst01.dat">
    	<input type="hidden" name="localpath" value="./DVs telecharges/">
    	<input type="hidden" name="multiV" value="">
    	<input type="hidden" name="nom_tab" value="CDSTAN_fin">
    	<input type="hidden" name="entete_D" value="a%3A18%...">
    	<input type="hidden" name="destinataire" value="a%3A3...">
    	<input type="hidden" name="entete_V" value="a%3A18...">
    	<input type="hidden" name="varia_fixe" value="a%3A...">
    	<input type="hidden" name="varia_ctb2" value="a%3A1...">
    	<input type="hidden" name="CDSTAN" value="a%3A2%...">
    	<input type="hidden" name="CDSTAN_IT1" value="a%3A2%...">
    	<input type="hidden" name="CDSTAN_IT3" value="a%3A2%...">
    	<input type="hidden" name="CDSTAN_suite" value="a%3A2%...">
    	<input type="hidden" name="CDSTAN_IT2" value="a%3A2%...">
    	<li><a href="#" onclick="submitForm('CDSTAN_fin1',1);">CDSTAN_fin1</a></li>
    	<li><a href="javascript:submitForm('CDSTAN_fin1',1);">CDSTAN_fin1</a></li>
    	<li><a href="#" onclick="submitForm('CDSTAN_fin1',2);">CDSTAN_fin2</a></li>
    	<li><a href="javascript:submitForm('CDSTAN_fin1',2);">CDSTAN_fin2</a></li>
    </form>

    Voici l'exemple d'un formulaire généré par mon code.

    J'ai mis '...' pour ne pas mettre toutes les suites de caractères correspondant à des tableaux sérialisés.
    Donc les liens fonctionnent en local, le champ caché est ajouté et le formulaire est soumis.
    Par contre sur le serveur Apache de la machine distance rien ne se passe avec le même code.

    A noter que si j'utilise de la même manière une fonction javascript qui affiche un alert sans passer de paramètre cela fonctionne sur le serveur.

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    J'ai tenté de mettre en place ta solution sekaijin.

    Javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    		function submitForm(){
     
    		alert(scriptData.numV);
    		alert(scriptData.nomForm + scriptData.numForm);
     
    		var input = '<input type="hidden" name="num_V" value="' + scriptData.numV + '">';
    		var form = scriptData.nomForm + scriptData.numForm;
    		document.getElementById(form).innerHTML += input;
    		document.getElementById(form).submit();	
    		}
    Php
    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
     
    <?								for($j=1;$j<=sizeOf($struct);$j++){
    									$scriptData = Array(
    										'nomForm' => $nom_struct,
    										'numForm' => $it_var,
    										'numV' => $j
    									);
    ?>
    								<script type="text/javascript">
    									scriptData = <?php echo json_encode($scriptData ); ?>;
    								</script>	
    <?	
    									echo '<li><a href="#" onClick ="submitForm(scriptData.message);">';
    									echo $nom_struct.$j;
    									echo '</a></li>';
     
    								}
    							}
    ?>
    Je suis confronté à deux problèmes :

    1 - les valeurs du tableau associatif sont toujours celles du dernier passage de la boucle

    2 - sur le serveur les alert de la fonction javascript sont bien affichés mais le formulaire n'est pas soumis alors que cela fonctionne en local

  6. #6
    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
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par mcfive Voir le message
    1 - les valeurs du tableau associatif sont toujours celles du dernier passage de la boucle
    Parce que tu as mis la génération dans la boucle for.

    enctype="multipart/form-data"
    Pourquoi tu as mis l'enctype mutlipart/form-data or que tu n'as que des input hidden ?
    Citation Envoyé par mcfive Voir le message
    submitForm(scriptData.message)
    function submitForm()


    Tu dois mettre les balise input en auto-fermante.

    A+.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Envoyé par mcfive Voir le message
    1 - les valeurs du tableau associatif sont toujours celles du dernier passage de la boucle
    Parce que tu as mis la génération dans la boucle for.
    Mais les paramètres passés à la fonction javascript doivent être différents à chaque passage de la boucle, je ne vois donc pas à quel autre endroit je pourrais effectuer la génération.

    Tu dois mettre les balise input en auto-fermante.
    C'est à dire ?

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Parce que tu as mis la génération dans la boucle for.


    Pourquoi tu as mis l'enctype mutlipart/form-data or que tu n'as que des input hidden ?




    Tu dois mettre les balise input en auto-fermante.

    A+.
    J'ai bien enlevé le enctype et mis les balise input en auto-fermante. Mais cela ne résoud pas mon problème la méthode submit() sur le serveur ne fonctionne pas alors qu'en local elle fonctionne très bien.

  9. #9
    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
    Points : 15 059
    Points
    15 059
    Par défaut
    Met un bouton submit caché dans ton formulaire que tu simules son click dans la fonction.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    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
    	function submitForm1(nomForm, numV){
    		alert('test');
    		var input = '<input type="hidden" name="num_V" value="' + numV + '">';
    		document.getElementById(nomForm).innerHTML += input;
    		//document.getElementById(nomForm).submit();
    		document.getElementById('multiV').click();
     
    	}
     
    		function submitForm2(){
     
    		alert(scriptData.numV);
    		alert(scriptData.nomForm + scriptData.numForm);
     
    		var input = '<input type="hidden" name="num_V" value="' + scriptData.numV + '">';
    		var leForm = scriptData.nomForm + scriptData.numForm;
    		document.getElementById(leForm).innerHTML += input;
    		//document.getElementById(leForm).submit();	
    		document.getElementById('multiV').click();
    		}
    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
    echo'<input type="submit" id="multiV" name="multiV" value="" style="visibility:hidden"/>';
     
    								for($j=1;$j<=sizeOf($struct);$j++){
    										$scriptData = Array(
    										'nomForm' => $nom_struct,
    										'numForm' => $it_var,
    										'numV' => $j
    									);
    ?>
    								<script type="text/javascript">
    									scriptData = <?php echo json_encode($scriptData ); ?>;
    								</script>	
    <?php
     
    									echo '<li><a href="#" onClick ="submitForm2(scriptData);">';
    									echo $nom_struct.$j;
    									echo '</a></li>';
     
    									echo '<li><a href="#" onclick="submitForm1(\''.$nom_struct.$it_var.'\','.$j.');">';
    									echo $nom_struct.$j;
    									echo '</a></li>';
     
    									echo '<li><a href="javascript:submitForm1(\''.$nom_struct.$it_var.'\','.$j.');">';
    									echo $nom_struct.$j;
    									echo '</a></li>';

    Les 3 méthodes fonctionnent en local (messages alert affichés et formulaire soumis ), et sur le serveur les message alert sont bien affichés mais la méthode click() ne fonctionne pas non plus...
    Je commence à désespérer...

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    J'ai trouvé le problème cela venait du proxy que j'utilise, il fallait le désactiver pour le serveur !

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

Discussions similaires

  1. appel fonction javascript avec parametre tableau en php
    Par cocobelle89 dans le forum Langage
    Réponses: 3
    Dernier message: 25/07/2012, 09h47
  2. appel fonction javascript avec parametre tableau en php
    Par cocobelle89 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/07/2012, 13h36
  3. Bouton lancement fonction JS avec variable PHP
    Par LePueblo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/10/2008, 14h12
  4. fonction javascript et variables php
    Par esther60 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/04/2008, 08h12
  5. Réponses: 2
    Dernier message: 16/07/2007, 16h04

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