2009-05-04 77 views
0

什么是错的代码它的作品第一次然后当我建立的标题再次时出现错误,说从不确定排序使用jQuery和PHP

jQuery的

function sort(tableHeader,sortDir) 
{ 
$.ajax({ 
url: "sort.php", 
type:"get", 
data: "tableHeader="+tableHeader +"&sortdirection="+sortDir, 
success:function(data){ 
$("#t1").html(data);}});} 

PHP

$table_Header=$_GET['tableHeader']; 
    $sort_Dir=$_GET['sortDir']; 

if ($table_Header == 'From') 
{ 
    $sort_By = 'player_name'; 
} 
else if ($table_Header == 'To') 
{ 
    $sort_By = 'player_name'; 
} 
else if ($table_Header== 'Gr') 
{ 
    $sort_By = 'grp_abr'; 
} 

if (isset($sort_Dir) && $sort_Dir == 'DESC') 
{ 
    $sort_Dir = 'DESC'; 
} 
else 
    { 
    $sort_Dir = 'ASC'; 
    } 

    $str = stripslashes('From'); 
    echo $sortBy; 
    $result = mysql_query("SELECT * FROM messages,Player 
    where player_id = from_user 
    ORDER BY player_name ".$sort_Dir); 
    echo "<thead> 
    <tr> 
    <th style='color:royalblue;'>•</th> 
    <th align='center'>Time</th> 
    <th align='left' onClick='sort('From',$sort_Dir);'>De:</th> 
    <th align='left'>To:</th> 
    <th align='left'>Gr</th> 
    </tr> 
    </thead> "; 

    while($row = mysql_fetch_array($result)) 
    { 
    echo "<tbody> 
    <tr class='highlight'> 
    <td width='30' align='center' style='color:royalblue'>"."•"."</td> 
    <td width='70' align='left'>".$row["Time_Date"]."</td> 
    <td width='600' align='left'>".$row["player_name"]."</td> 
    <td width='600' align='left'></td> 
    <td width='100' align='left'></td> 
    <tr class='highlight'> 
    <td></td> 
    <td colspan='4'>".$row["msg_desc"]."</td></tr> 
</tbody>"; 
    } 
+0

请指定“再次构建标题”。 sort()函数的后续调用?重新加载页面?还有别的吗?这些调用何时以及如何发生?谢谢。 – 2009-05-04 07:41:53

+0

......哦,我忘记了:sort()的第一次调用何时以及如何发生? – 2009-05-04 07:44:11

+0

最后但并非最不重要的一点是:你在哪个浏览器(和相关版本)上运行这个? – 2009-05-04 07:54:46

回答

2

这里跟随我的观察,看看你的源代码后。

sort.php:12 >>>用于排序方向的$ _GET数组元素输入错误:调用它$_GET["sortDir"]同时的JavaScript sort()功能构成与在查询字符串称为“sortdirection”该变量的AJAX请求。

sort.php:28 >>>由于您的JavaScript函数sortDirection()已经做到了,所以您不需要在这里反向排序。因此,从28到35和44行的注释行不使用php变量$sort_Dir,而是使用javascript变量sortDir代替。

user.php:48 >>>比较,以确定当前的排序顺序对字符串字面"Desc"制成,而通常使用"DESC"作为此变量的值,所以第一个尝试是好的,但第二干脆什么都不做"DESC"不同于由于字符串之间的二进制比较,所以在Javascript中使用了"Desc"。因此请将"Desc"更改为"DESC"并存入您的sortDirection()函数中。

这应该让你的东西工作。

+0

谢谢猩红你的帮助 – Sarah 2009-05-12 12:29:59

0

首先,我试图将onClick='sort('From',$sort_Dir);'sort(...)左右的单引号切换为双引号,并使用反斜杠转义它们,因为您在php st中响那里,这样说:

onClick=\"sort('From',$sort_Dir);\" 

其次,同样的代码片段里面,你传递$ sort_Dir,这将是PHP转化为ASC或DESC。由于在这样的字符串中,您正在编写一些源html代码以便插入文档中的某个位置,为了让ASC或DESC这个词不会在引号附近出现,就会混淆javascript解析器。

所以你应该改变的onClick这样的东西:

onClick=\"sort('From','$sort_Dir');\" 

但正如我在我的评论说,你应该给第一个更多的细节(和唯一的成功,似乎)之类的调用( )(当它发生时,如何等)。

试试看看。

+0

感谢您的回复Scarlet,第一次是从主页调用index.php的时候我创建表头第一次 index 。php 自:现在 我应该在哪里添加排序方向 – Sarah 2009-05-04 09:19:33

+0

而我在Mozilla Firefox和safari上运行 – Sarah 2009-05-04 09:48:20

+0

你好Sarah,你是否已经尝试过我建议的更改?请让我知道他们是否在工作。如果他们不让我定义一些测试用例: a)页面首次加载;函数sort()被执行了吗?它工作吗? b)你首次点击'发件人'标题; sort()是否工作? c)你点击'From'标题5次; sort()每次都工作吗? 让我们从这里开始,如果我们不这样做,也许我觉得我不能帮助你看看整个代码,对不起。 – 2009-05-04 13:17:22