Lancement de script via la balise <a href= >

Fermé
tanis - 26 avril 2012 à 18:05
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 - 10 mai 2012 à 14:55
Bonjour,

J'ai un petit souci dans mon code. J'essaye de faire ça :

<a href="#" onclick="javascript:infoChamp(<?php echo $nom_champ ?>)"> <?php echo $nom_champ ?> </a>



mon script :


function infoChamp(value)
{ 

									alert('TEST');

    var xhr; 
    try {  xhr = new ActiveXObject('Msxml2.XMLHTTP');   }
    catch (e) 
    {
        try {   xhr = new ActiveXObject('Microsoft.XMLHTTP'); }
        catch (e2) 
        {
           try {  xhr = new XMLHttpRequest();  }
           catch (e3) {  xhr = false;   }
         }
    }
 
    xhr.onreadystatechange  = function() 
    { 
       if(xhr.readyState  == 4)
       {
        if(xhr.status  == 200) 
            document.ajax.dyn="Received:"  + xhr.responseText; 
        else 
            document.ajax.dyn="Error code " + xhr.status;
        }
    }; 
	
var nom_champ;
nom_champ=value;
var nom_champ = encodeURIComponent(nom_champ);

xhr.open( "GET", "data_liste_table.php?nom_champ",  true); // recupere la liste des tables contenant le champs choisi

xhr.send(null); 

var liste_table = JSON.parse(xhr.responseText);
	
} 



Le Gros problème c'est que mon script ne se lance pas, je n'ai même pas l'affichage de l'alerte.
A voir également:

10 réponses

Ce qui est surprenant c'est que l'alerte fonctionne si je le lance directement dans la balise


 <a href="#" onclick="javascript:alert('TEST')"> <?php echo $nom_champ ?> </a>



J'ai bien entendu essayé d'écrire mon appel de script sous cette forme :


<a href="javascript:infoChamp(<?php echo $nom_champ ?>)"> <?php echo $nom_champ ?> </a>



ça ne fonctionne pas non plus.

Une précision supplémentaire, ma balise est dans une boucle for.
0
Personne n'a une petite idée d'où pourrais venir le problème ?

Je bloque sur un autre appel de fonction java script (qui également ne se lance pas).

Quelqu'un serait il en mesure de m'aider s'il vous plait ?
0
bonjour ,
essyez de mettre des " ' " avant les balises PHP <? ?>

<a href="#" onclick="javascript:infoChamp('<?php echo $nom_champ ?>')"> <?php echo $nom_champ ?> </a>
0
Merci mais ça ne solutionne pas le problème :/ .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 mai 2012 à 10:46
Bonjour,

Essaye comme ça :

<?php 
   echo('<a href="#" onclick="javascript:infoChamp(\''.$nom_champ.'\')"> '.$nom_champ.'</a>');
?>
0
Toujours pas.

J'avoue que je bloque complétement sur ce problème, je suppose que sa doit être un problème de syntaxe ...
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 mai 2012 à 11:14
Et si à la place du PHP tu rentres directement le bon paramètre dans l'appel de ta méthode javascript, ça marche ?
0
l'alerte fonctionne lorsque je la lance comme suis :
<a href="#" onclick="javascript:alert('TEST')"> <?php echo $nom_champ ?> </a>
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 mai 2012 à 11:20
Oui mais remplaçant le "alert" par infoChamp avec un paramètre valide ?
0
non, j'ai remplacé le echo par le nom d'un champ, mais lorsque je clique sur mon lien je n'ai toujours pas le message d'alerte TEST qui s'affiche ...
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
Modifié par Mihawk le 10/05/2012 à 11:28
Et en virant le "javascript : " ?
onclick="infoChamp('monparametre');"
0
Je vous donne l'intégralité de mon code, c'est assez lourd, désolé.



<!DOCTYPE html> 
<?php  
session_start();  
// set_time_limit(0); // permet de ne plus limiter le timeout du navigateur 
$nom_table="VTR_UG"; 
?>        

<html> 
<head> 

 <!-- <?php echo $_SERVER['PATHEXT']; ?> permet de verifier si java script est activé (cf js ou jse )  --> 

 <title>Vue Cascade </title> 

<link rel="STYLESHEET" href="style.css" type="text/css"/> 

<!--[if lt IE 9]> 
   <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
   <![endif]-->  
      <!-- Permet de faire fonctionner le HTML 5 même dans un navigateur ancien --> 


<script type="text/javascript"> 

function infoChamp(value) 
{  

         alert('TEST'); 

    var xhr;  
    try {  xhr = new ActiveXObject('Msxml2.XMLHTTP');   } 
    catch (e)  
    { 
        try {   xhr = new ActiveXObject('Microsoft.XMLHTTP'); } 
        catch (e2)  
        { 
           try {  xhr = new XMLHttpRequest();  } 
           catch (e3) {  xhr = false;   } 
         } 
    } 
  
    xhr.onreadystatechange  = function()  
    {  
       if(xhr.readyState  == 4) 
       { 
        if(xhr.status  == 200)  
            document.ajax.dyn="Received:"  + xhr.responseText;  
        else  
            document.ajax.dyn="Error code " + xhr.status; 
        } 
    };  
  
 var nom_champ; 
 nom_champ=value; 
 var nom_champ = encodeURIComponent(nom_champ); 
 xhr.open( "GET", "data_liste_table.php?nom_champ",  true); // recupere la liste des tables contenant le champs choisi 
 xhr.send(null);  
 var liste_table = JSON.parse(xhr.responseText); 
  
}  



function redirection() { 
nom_table=document.getElementById("value"); 

<?php $_SESSION['nom_table'] = $_GET['nom_table']; ?> 

window.location.replace("vue_cascade.php"); 
} 



</script> 



</head> 
  
<body class="page"> 
  

 <div id="header"> 
  <!-- Bienvenue <?php 
  echo' '. $_SESSION['Nom'].' '. $_SESSION['Prenom'].''; ?> --> 
 </div> 
   

 <div id="menu"> 
  <h1> Menu </h1><br /> 
  <a href="page_centrale.php">Page Centrale</a><br/><br/> 
  <a href="vue.php">Vue</a><br/><br/> 
  <a href="role_schema.php">Role et Schema</a><br/><br/> 
   
 </div> 
   


 <div id="deconnexion"> 
  <form action="deconnexion.php"> 
  Vous êtes connecté en tant que <!-- <?php echo $_SESSION['login']; ?> -->.<br/> 
  <input class="submit" type="submit" name="Deconnexion" id="Deconnexion" value="Deconnexion"/><br/> 
  </form> 
 </div> 
  

  
  
 <div id="corps"> 
  <h2> Vue Cascade </h2><br/> 
   


   <div id="cadre_gauche"> 
    <table cellspacing="3" cellpadding="2"> 
  
     <tr> 
     <td><h3>Nom Table: <?php echo $nom_table ?></h3></td> <!-- Aller chercher le Nom de la Table selectionné --> 
     </tr> 
    
     <tr>    
      <td>   <!-- Créer un volet déroulant regroupant l'ensemble des Tables Vue , Afficher le nom de la table préselectionné directement dans le volet deroulant --> 
       <select name="liste" onchange="redirection(this.value)" > 

       <?php  
          
       include("connexion_DWH.php");        // connexion a la Bdd 
        
       $resource_nbr_table=odbc_exec($connexion,"Select count( distinct table_name ) from user_tab_privs where grantee = 'USR_DWH_FRANCE' and privilege = 'SELECT'and table_name not like 'BIN%'" ); 

        odbc_fetch_into ($resource_nbr_table, $result_array_1 ); 
        
       $nbr_table=$result_array_1{0};   // nombre de Tables Vue 
        
        
       $resource_nom_table_menu_deroulant = odbc_exec($connexion,"Select distinct table_name from user_tab_privs where grantee = 'USR_DWH_FRANCE' and privilege = 'SELECT'and table_name not like 'BIN%' GROUP by table_name order by table_name" ); 
              
      
          
          
          
      if (!$connexion) {            // verification de la connexion a la Bdd 
       ?> <script type="text/javascript"> 
         //window.location.replace("index.php"); 
         alert('Erreur de connexion à la Base de données.'); 
         </script> 
        <?php 
          ;} 

       else { 

        for ($i=0;$i<$nbr_table;$i++)  { 
               
               
              odbc_fetch_into ($resource_nom_table_menu_deroulant, $result_array_2_5,$i+1 ); 

              odbc_fetch_into ($resource_nom_table_menu_deroulant, $result_array_2, $i ); 

              $nom_table_menu_deroulant_1= $result_array_2{0} ; 
              $nom_table_menu_deroulant_2= $result_array_2_5{0} 
               
              // tableau qui rescence l'ensemble des vues accessibles par cet utilisateur  
               
        ?> 

           <option value="<?php echo $nom_table_menu_deroulant_1 ?> <?php if ($i<nbr_table-1 and $nom_table_menu_deroulant_1==$nom_table) {echo ('selected="selected"');} ?> > <?php echo $nom_table_menu_deroulant_1 ?>            

<!-- Affiche dans le menu déroulant l'ensemble des Tables Vues présentes dans la Bdd et effectue une redirection lors d'un changement de table , préselectionner la table déja choisis par l'utilisateur --> 
           

<option value="<?php echo $nom_table_menu_deroulant_2 ?> <?php if ($nom_table_menu_deroulant_2==$nom_table) {echo ('selected="selected"');} ?> > <?php echo $nom_table_menu_deroulant_2 ?>  
          
         <?php 
                ;} 
         ;}        
         ?> 
       </select>  
      </td> 
     </tr> 
     <!-- Lister l'ensemble des Champs contenu dans la Table selectionné --> 
      <tr> 
      <td> 
       <?php 
        
       $resource_nbr_champ=odbc_exec($connexion,"SELECT count(*) FROM user_tab_columns WHERE table_name ='" . $nom_table . "'");
 
            odbc_fetch_into ($resource_nbr_champ, $result_array_3 ); 
       $nbr_champ=$result_array_3{0};       
  //calcul du nombre de champs de la table selectionné 
        
      
       $resource_nom_champ=odbc_exec($connexion,"Select distinct COLUMN_NAME FROM user_tab_columns WHERE table_name ='".$nom_table."'GROUP by COLUMN_NAME" ); 
             // Recuperation dans un tableau de l'ensemble des champs relatif a la vue selectionné 
      
        
       if (!$connexion) {           // verification de la connexion a la Bdd 
        ?> <script type="text/javascript"> 
         //window.location.replace("index.php"); 
         alert('Erreur de connexion à la Base de données.'); 
         </script> 
         <?php 

       } else { 

        for ($j=0;$j<$nbr_champ;$j++) {  
             
             

         odbc_fetch_into ($resource_nom_champ, $result_array_4, $j ); 
         $nom_champ=$result_array_4{0};     
    

         
     ?>

 <a href="#" onclick="javascript:infoChamp('<?php echo $nom_champ ?>')"> <?php echo $nom_champ ?> </a> </br> 

<?php  // <!-- Affichage de tous les champs de la Table selectionné --> 
               } ; 
             $nom_champ=''; 
         } 
          ?>  
         
      </td> 
     </tr> 
      

   </table> 
      
   </div> 
   <div id="cadre_droite"> 
    <!-- <INPUT type="text" name="dyn"  value=""> --> 

   </div> 
    
   <div id="cadre_bas"> 
    <h4>Informations relatives au champ <?php echo $nom_champ ?> :</h4> 

     
   </div> 
    
 </div> 
  
 <div id="footer"> 
  <p style="text-align: right;"><a href="admin_contact.php">Contact</a></p> 
 </div>  
  
 </body> 
 </html>  

0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 mai 2012 à 14:02
Tu devrais installer le plugin "Firebug" sous Mozilla et faire tourner ton site dessus ; Firebug te sortira les erreurs Javascript s'il y en a.
0
Ok je vais faire ça et je vous tient au courant.

merci
0
Arrête moi si je me trompe, Firebug affiche le code source de la page en cours, et affiche en surligné jaune d'éventuelles erreurs de syntaxe ?

Si c'est bien ça, je n'ai pas d'erreur sur le code concerné par ma demande ...

Je désespère de comprendre pourquoi je n'arrive pas à appeler de fonction javascript ...
C'est la première fois que j'ai un tel problème , j'ai même vérifié si JS était bien activé sur le navigateur via la commande :

<?php echo $_SERVER['PATHEXT']; ?>
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 mai 2012 à 14:44
Firebug a normalement un onglet "Console" dans lequel apparaissent les erreurs JS
0
Oui, et sa vient de me permettre de trouver mon erreur !
J'avais une erreur dans une autre fonction js , ce qui bloquait tout le reste.

Merci beaucoup Mihawk !
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 mai 2012 à 14:55
De rien :)
0