web-dev-qa-db-fra.com

Comment rediriger sur une autre page et passer le paramètre dans l'URL de la table?

Comment rediriger sur une autre page et passer le paramètre dans l'URL de la table? J'ai créé dans le modèle de tornato quelque chose comme ça

<table data-role="table" id="my-table" data-mode="reflow">
    <thead>
        <tr>
            <th>Username</th>
            <th>Nation</th>
            <th>Rank</th>
            <th></th>
        </tr>
    </thead>
    <tbody>
        {% for result  in players %}
        <tr>
            <td>{{result['username']}}</td>
            <td>{{result['nation']}}</td>
            <td>{{result['rank']}}</td>
            <td><input type="button" name="theButton" value="Detail"
                       ></td>
        </tr>
    </tbody>
    {% end %}
</table>  

et je voudrais quand j'appuie sur detail pour être redirigé sur /player_detail?username=username et montrer tous les détails sur ce joueur. J'ai essayé avec href="javascript:window.location.replace('./player_info');" dans la balise input mais je ne sais pas comment mettre le résultat ['username']. Comment faire cela?

23
PaolaJ.

Définissez le nom d'utilisateur sur data-username attribut au bouton et aussi à une classe:

[~ # ~] html [~ # ~]

<input type="button" name="theButton" value="Detail" class="btn" data-username="{{result['username']}}" />

[~ # ~] js [~ # ~]

$(document).on('click', '.btn', function() {

    var name = $(this).data('username');        
    if (name != undefined && name != null) {
        window.location = '/player_detail?username=' + name;
    }
});​

EDIT:

En outre, vous pouvez simplement vérifier undefined && null en utilisant:

$(document).on('click', '.btn', function() {

    var name = $(this).data('username');        
    if (name) {
        window.location = '/player_detail?username=' + name;
    }
});​

Comme mentionné dans ce réponse

if (name) {            
}

sera évalué à true si la valeur n'est pas:

  • nul
  • undefined
  • NaN
  • chaîne vide ("")
  • false

La liste ci-dessus représente toutes les valeurs de falsy possibles dans ECMA/Javascript.

36
palaѕн

Faire ceci:

 <script type = "text/javascript"> 
 fonction showDetails (nom d'utilisateur) 
 {
 window.location = '/ player_detail? username =' + nom d'utilisateur; 
} 
 </ script> 
 
 <type d'entrée = "bouton" name = "leBouton" value = "Detail" onclick = "showDetails ('nomutilisateur' ); "> 
7
Ravinder Singh

Liez le bouton, cela se fait avec jQuery:

$("#my-table input[type='button']").click(function(){
    var parameter = $(this).val();
    window.location = "http://yoursite.com/page?variable=" + parameter;
});
6
Atticus

Voici une solution générale qui ne repose pas sur JQuery. Modifiez simplement la définition de window.location.

<html>
   <head>
      <script>
         function loadNewDoc(){ 
            var loc = window.location;
            window.location = loc.hostname + loc.port + loc.pathname + loc.search; 
         };
      </script>
   </head>
   <body onLoad="loadNewDoc()">
   </body>  
</html>
2
TennisVisuals