2011-07-09 34 views
1

名单我有以下代码:排序而无需刷新页面

<table border="0" width="100%"><tbody> 
    <tr> 
     <th style="text-align: center;"><?php echo $text['PLAYERS']; ?></th> 
    </tr> 
    <tr> 
     <td> 
     <select name="order" size="1" onchange="sortPlayers(this)"> 
      <option value="name"><?php echo $text['NAME']; ?></option> 
      <option value="age"><?php echo $text['AGE']; ?></option> 
      <option value="ss"><?php echo $text['SS']; ?></option> 
      <option value="experience"><?php echo $text['EXPERIENCE']; ?></option> 
      <option value="leadership"><?php echo $text['LEADERSHIP']; ?></option>    
      <option value="weight"><?php echo $text['WEIGHT']; ?></option>    
      <option value="height"><?php echo $text['HEIGHT']; ?></option>  
      <option value="stamina"><?php echo $text['STAMINA']; ?></option>    
      <option value="strength"><?php echo $text['STRENGTH']; ?></option>    
      <option value="breakthroughs"><?php echo $text['BREAKTHROUGHS']; ?></option> 
      <option value="tackling"><?php echo $text['TACKLING']; ?></option> 
      <option value="handling"><?php echo $text['HANDLING']; ?></option>    
      <option value="speed"><?php echo $text['SPEED']; ?></option> 
      <option value="kicking"><?php echo $text['KICKING']; ?></option> 
     </select> 
     </td> 
    </tr> 
    <?php foreach ($result as $player) { ?> 
    <tr> 
     <td style="text-align: left;"><?php echo $player['male'] . ' ' . $player['name']; ?></td> 
    </tr> 
    <?php } ?> 
    </tbody></table> 

它产生与每一个用户的玩家在网络游戏的列表。 我希望当用户从下拉菜单中选择一些东西时,玩家会根据选择的内容(力量,速度等)进行排序。 我有一个函数让玩家:get_players($ tid,$ sort)。 $ tid =用户标识 $ sort =排序标准(速度,踢等)。

什么是JavaScript代码以获取该输入中选定的内容,并根据该输入中的选择更改变量$ result,但不刷新页面。

回答

1

如果我正确理解了欲望,您希望观众能够选择一个选项(姓名,年龄,ss,经验等等),然后根据选择的属性显示不同的排序结果你想在不刷新页面的情况下做到这一点。

从设计角度来看,您有两种方法可行。您可以在初始页面(在Javascript数据结构中)包含所有选择的所有可能数据。然后,这只是一些javascript代码的问题,可以从数据结构中获取正确的数据,对其进行排序并将其插入到DOM中进行显示。或者,如果您不预先包含所有数据,则必须进行ajax调用以获取所需的数据,对其进行排序,然后将其插入到DOM中。您现在在代码中显示的PHP看起来只包含了玩家的名字。

走哪条路真的取决于数据的规模。如果它是可管理的(从生成页面和浏览器内存消费的角度来看)只包含原始页面中的所有数据,那么编码更容易。但是,你必须看看你最大的玩家数量,你支持的属性的最大数量。如果这是不可管理的,那么您将需要支持可以返回已选择的给定属性的JSON数据的ajax调用。

+0

你也可以处理所有的排序VIA ajax调用,并让AJAX调用返回整个表,然后让JS函数完全覆盖表。这将完全消除对JSON的任何需求,并且您需要做的就是回显ajax调用的整个返回值。 –