ここに問題があります:私はJQueryのtablesorterを使ってテーブルのページを設定しています。テーブルの行は、次のようにデータベースから取得されます。Ajaxをテーブルソート/フィルタリングと組み合わせる
//list players by points (default listing)
$result=mysql_query("select * from players order by pts_total") or die(mysql_error());
echo "<table id='list_table' class='tablesorter'><thead><tr><th width='25px'>Pos</th><th width='200px'>Player</th><th width='25px'>Club</th><th width='25px'>Value</th><th width='25px'>Points</th></tr></thead><tbody>";
while($row=mysql_fetch_array($result)){
//get team logo
$result1=mysql_query("select amblem from real_teams where team_name='$row[team]' ") or die(mysql_error());
$row1=mysql_fetch_array($result1);
echo "<tr>";
echo "<td>T</td>";
echo "<td>".$row['name']."</td>";
echo "<td style='text-align:center;'><img src='".$row1['amblem']."' height=16px title='".$row['team']."'></td>";
echo "<td>".$row['current_value']."</td>";
echo "<td>".$row['pts_total']."</td>";
echo "</tr>";
}
echo "</tbody></table>";
すべてがうまくいき、テーブルがページングされ、フットボール選手がリストされます。しかし、事は、私が(その情報が同じデータベーステーブルにある)ユーザーが特定の位置を再生するだけの選手を表示するように選択することができるはずドロップダウンを持って、次のとおりです。
<select name="show_positions" id="show_positions" onChange="showPlayers(this.value)">
<option value="A">All Positions</option>
<option value="G">Goalkeepers</option>
<option value="D">Defenders</option>
<option value="M">Midfielders</option>
<option value="S">Strikers</option>
</select>
これはAjaxの機能を呼び出しますあるポジションをプレイしているプレイヤーのみがいるテーブルを表示し、それが想定しているとおりの動作をしますが、テーブルのページがなくなりました。代わりに、大きなテーブルを1つ表示します。私はページがリロードされていないので、それをページ分割するJavascriptが処理されないためだと思いますか? Ajaxコール中にJavascript関数を再度呼び出す方法はありますか?ここでアヤックスだとPHPファイルは、それが呼び出されます:
<script type="text/javascript">
function showPlayers(str)
{
if (str=="")
{
document.getElementById("inner_list").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("inner_list").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","listplayers.php?q="+str,true);
xmlhttp.send();
}
</script>
listplayers.php:
<?php
include('../include/db.php');
dbConnect('dbname');
$pos=$_GET['q'];
if ($pos=="A")
$pos="";
//list players by points (default listing)
$result=mysql_query("select * from players where position LIKE '%$pos%' order by pts_total") or die(mysql_error());
echo "<table id='list_table' class='tablesorter'><thead><tr><th width='25px'>Pos</th><th width='200px'>Player</th><th width='25px'>Club</th><th width='25px'>Value</th><th width='25px'>Points</th></tr></thead><tbody>";
while($row=mysql_fetch_array($result)){
//get team logo
$result1=mysql_query("select amblem from real_teams where team_name='$row[team]' ") or die(mysql_error());
$row1=mysql_fetch_array($result1);
echo "<tr>";
echo "<td>T</td>";
echo "<td>".$row['name']."</td>";
echo "<td style='text-align:center;'><img src='".$row1['amblem']."' height=16px title='".$row['team']."'></td>";
echo "<td>".$row['current_value']."</td>";
echo "<td>".$row['pts_total']."</td>";
echo "</tr>";
}
echo "</tbody></table>";
?>
、ページの先頭にあるtablesorter jQueryの、:
<script type="text/javascript">
$(document).ready(function() {
$("table")
.tablesorter({widthFixed: true, widgets: ['zebra']})
.tablesorterPager({container: $("#pager"), size: 20});
});
</script>
ありがとう、私はそれを試してみます。私は私の質問に元のtablesorter呼び出しを追加しています。 – robert
@ Jovanはい、私は自分の答えを更新しました。変数をテーブルに初期化してから再利用するオプションを保存することができます –
完璧、ありがとう!できるだけ早く答えを受け入れます。 – robert