Lancement de script via la balise <a href= >
tanis
-
Mihawk Messages postés 4753 Statut Contributeur -
Mihawk Messages postés 4753 Statut Contributeur -
Bonjour,
J'ai un petit souci dans mon code. J'essaye de faire ça :
mon script :
Le Gros problème c'est que mon script ne se lance pas, je n'ai même pas l'affichage de l'alerte.
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.
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. -
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 ? -
bonjour ,
essyez de mettre des " ' " avant les balises PHP <? ?>
<a href="#" onclick="javascript:infoChamp('<?php echo $nom_champ ?>')"> <?php echo $nom_champ ?> </a> -
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
Essaye comme ça :
<?php echo('<a href="#" onclick="javascript:infoChamp(\''.$nom_champ.'\')"> '.$nom_champ.'</a>'); ?> -
Toujours pas.
J'avoue que je bloque complétement sur ce problème, je suppose que sa doit être un problème de syntaxe ... -
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> -
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.
-
-
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']; ?>