Подтвердить что ты не робот

Как перенаправить на другую страницу и передать параметр в URL из таблицы?

Как перенаправить на другую страницу и передать параметр в URL из таблицы? Я создал в шаблоне tornato что-то вроде этого

<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>  

и я хотел бы, когда я нажимаю детали для перенаправления на /player_detail?username=username и показать все подробности об этом игроке. Я пробовал с href="javascript:window.location.replace('./player_info');" внутри тега ввода, но не знаю, как поместить результат ['username'].  Как это сделать?

4b9b3361

Ответ 1

Задайте имя пользователя как атрибут data-username для кнопки, а также класс:

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:

Кроме того, вы можете просто проверить undefined && null, используя:

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

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

Как указано в этом ответе

if (name) {            
}

будет оценивать значение true, если значение не указано:

  • null
  • undefined
  • NaN
  • пустая строка ("")
  • 0
  • ложь

В приведенном выше списке представлены все возможные значения фальши в ECMA/Javascript.

Ответ 2

Сделайте это:

<script type="text/javascript">
function showDetails(username)
{
   window.location = '/player_detail?username='+username;
}
</script>

<input type="button" name="theButton" value="Detail" onclick="showDetails('username');">

Ответ 3

Привязать кнопку, это делается с помощью jQuery:

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

Ответ 4

Вот общее решение, которое не полагается на JQuery. Просто измените определение 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>