如何重定向另一个页面并从表中传递url中的参数?

Pao*_*aJ. 25 javascript jquery templates tornado jquery-mobile

如何重定向另一个页面并从表中传递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>  
Run Code Online (Sandbox Code Playgroud)

我希望当我按下细节重定向/player_detail?username=username 并显示该播放器的所有细节时.我尝试使用href="javascript:window.location.replace('./player_info');"内部输入标记,但不知道如何将结果['用户名']放入.如何做到这一点?

pal*_*aѕн 38

将用户名作为data-username属性设置为按钮以及类:

HTML

<input type="button" name="theButton" value="Detail" class="btn" data-username="{{result['username']}}" />
Run Code Online (Sandbox Code Playgroud)

JS

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

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

编辑:

此外,您只需检查undefined&& null使用:

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

    var name = $(this).data('username');        
    if (name) {
        window.location = '/player_detail?username=' + name;
    }
});?
Run Code Online (Sandbox Code Playgroud)

正如在这个答案中提到的那样

if (name) {            
}
Run Code Online (Sandbox Code Playgroud)

如果值不是,则评估为真:

  • 空值
  • 未定义
  • 为NaN
  • 空字符串("")
  • 0

以上列表表示ECMA/Javascript中所有可能的错误值.

  • 有一点错误:"("之前的功能不应该存在. (2认同)

Rav*_*ngh 7

做这个 :

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

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


Att*_*cus 6

绑定按钮,这是通过jQuery完成的:

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


小智 6

这是一个不依赖于 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>
Run Code Online (Sandbox Code Playgroud)