Jquery et Href

philphil5710
Invité n'ayant pas de compte PHPfrance

27 mars 2011, 07:48

Bonjour.
Je m'appelle Philippe.
J'ai un petit problème avec une fonction Jquery que j'utilise pour modifier une url.

Au chargement de ma page, j'exécute x fois la fonction:
function get_incident_load(incid)
{
    $.ajax({
   type: "POST",                                          
   url: "readincidents.php",
   data: "incid="+incid,
   success: function(msg){
    
     var valeurs=msg.split(' -- ');
  
     $("#no_incid").append(valeurs[0]+"<br>");

     $("a").attr("href", "../genhd/editer.php?intid="+valeurs[0]);
 

     $("#nom").append(valeurs[1]+"<br>");
     $("#structure").append(valeurs[2]+"<br>");
     $("#categorie").append(valeurs[3]+"<br>");
     $("#item").append(valeurs[4]+"<br>");          

     
     $("#input_no_incid").val(valeurs[0]+"<br>");
     $("#input_nom").val(valeurs[1]+"<br>");
     $("#input_structure").val(valeurs[2]+"<br>");
     $("#input_categorie").val(valeurs[3]+"<br>");
     $("#input_item").val(valeurs[4]+"<br>");               
   }
 });
}

La variable qui pose problème est "no_incid".
J'affiche le résultat dans ma page, sous forme de table:
       echo '<td width="35" ><font size="2"> <a  href="" div id="no_incid"></a></div></td>';
       echo "<input type='hidden' id='input_no_incid' name='input_no_incid'>";
ce qui me donne quelque chose comme:

Code : Tout sélectionner

4561 nom1 123 Gensite Account locked 4822 nom2 671 Téléphone Cascade impossible 5366 nom3 003 Citrix No access ...
mais mon lien pointe toujours vers la dernière valeur de no_incid retournée (càd valeurs[0]).
Je souhaiterais que chaque url générée contiennent sa propre valeur.

Est-ce possible?

Merci d'avance pour votre aide.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 mars 2011, 13:34

C'est dans ton utilisation de jquery qu'est le problème... Lorsque tu fais :
$("a").attr("href", "../genhd/editer.php?intid="+valeurs[0]);
C'est de toutes les balises <a> de ta page que tu modifies le href, donc forcément, elles héritent toutes du même lien. Il faut identifier chacun des liens individuellement et les mettre à jour individuellement...

Pour cela, tu peux utiliser un id, mais il faut que celui-ci soit différent pour chaque lien :
<a href="" id="no_incid0"></a>
<a href="" id="no_incid1"></a>
...

$("#no_incid" + numeroSequentiel).attr("href", "../genhd/editer.php?intid="+valeurs[0]);
Ps : le code html que tu génères n'est pas terrible... une balise font qui s'ouvre mais ne se ferme pas, un attribut "div" collé au milieu d'un lien, et une balise de fin </div> qui ne correspond du coup à rien :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 3607 Messages

28 mars 2011, 14:48

J'ajouterais une possible optimisation:
Tu pourrais renvoyer des données au format json dans ton script ajax, ça éviterais d'utiliser un .split('') pas tip top...
Donc ton script js:

Code : Tout sélectionner

$.ajax({ type: "POST", url: "readincidents.php", data: "incid="+incid, success: function(data){ console.log(data.var1); console.log(data.var2); console.log(data.var3); console.log(data.var3.var31); console.log(data.var3.var32); } });
et ton script readincidents.php:
<?php
$datas = array(
    'var1'=>'val1',
    'var2'=>'val2',
    'var3'=>array(
        'var31'=>'val31',
        'var32'=>'val32',
    )
);

echo json_encode($datas);