2009-05-04 3 views
0

Was mit diesem Code falsch ist es das erste Mal funktioniert dann, wenn ich den Header bauen wieder eine Fehlermeldung, erfolgt von undefiniert istSortieren mit Jquery und 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

Bitte geben Sie „den Header wieder bauen“. Nachfolgende Aufrufe der Funktion sort()? Die Seite neu laden? Etwas anderes? Wann und wie geschehen diese Aufrufe? Vielen Dank. –

+0

... oh, und ich habe vergessen: wann und wie kommt es zum ersten Aufruf von sort()? –

+0

und last but not least: Auf welchem ​​Browser (und der zugehörigen Version) läuft das? –

Antwort

2

hier nach meiner Beobachtungen, nach einem Blick auf den Quellcode haben.

sort.php:12 >>> das Element $ _GET Array für sich Sortierrichtung verschrieben hat: Sie nennen es $_GET["sortDir"] während der Javascript-Funktion sort() den Ajax-Request mit diesen Variablen in komponiert ‚SortDirection‘ genannt Abfragezeichenfolgen.

sort.php:28 >>> Sie müssen die Sortierreihenfolge hier nicht umkehren, da Ihre Javascript-Funktion sortDirection() es bereits tut. Also, Kommentarzeilen von 28 bis 35 und in Zeile 44 nicht verwenden den PHP-Variable $sort_Dir, aber die JavaScript-Variable sortDir statt.

user.php:48 >>> der Vergleich aktuelle Sortierreihenfolge zu bestimmen, gegen den wörtlichen "Desc", string gemacht, während Sie in der Regel "DESC" als Wert für diese Variable verwenden, so dass der erste Versuch war in Ordnung, aber die zweiten einfach nichts tut, als "DESC" anders aus "Desc" in Javascript, aufgrund des binären Vergleichs zwischen Zeichenfolgen. So "Desc" in Ihre sortDirection() Funktion "DESC" ändern.

Dies sollte erhalten Ihre Sachen arbeiten.

+0

Danke Scarlet für deine Hilfe – Sarah

0

zuerst würde ich versuchen, die onClick='sort('From',$sort_Dir);' Wechsel von einfachen Anführungszeichen um sort(...) in doppelte Anführungszeichen zu ändern, entkam sie mit einem umgekehrten Schrägstrich, wie Sie in einem PHP ST sind Ring gibt, auf diese Weise:

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

Zweitens innerhalb der gleichen Code-Schnipsel, die Sie vorbei $ sort_Dir, die von PHP in ASC oder DESC übersetzt werden. Da Sie in einer solchen Zeichenkette einen Quell-HTML-Code schreiben, der irgendwo in Ihr Dokument eingefügt werden soll, um das Wort ASC oder DESC ohne Anführungszeichen erscheinen zu lassen, wird der Javascript-Parser verwirren.

so sollten Sie die onClick Sachen wie diese ändern:

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

Aber wie ich in meinem Kommentar erwähnt, sollten Sie weitere Details zu dem ersten geben (und nur dann erfolgreich, so scheint es) Aufruf von sort () (wenn es passiert, wie usw.).

Versuchen Sie dies und sehen.

+0

Danke für die Antwort Scarlet, das erste Mal ist, wenn es von der Hauptseite der index.php aufgerufen wird, wenn ich die Tabelle Header zum ersten Mal Index erstellt .php From: jetzt, wo sollte ich hinzufügen Sortierrichtung – Sarah

+0

Und ich laufe auf Mozilla Firefox und Safari – Sarah

+0

Hallo Sarah, hast du schon die Änderungen versucht, die ich vorgeschlagen habe? Bitte lassen Sie mich wissen, wenn sie arbeiten. Wenn sie mich nicht einige Testfälle definieren lassen: a) die Seite wird zum ersten Mal geladen; Ist die Funktion sort() ausgeführt? Funktioniert es? b) Sie klicken zum ersten Mal auf die 'Von'-Kopfzeile; funktioniert sort()? c) Sie klicken für weitere 5 Mal auf die "Von" -Kopfzeile; Funktioniert sort() jedes Mal? Fangen wir von hier an, wenn wir nicht auf diese Weise zu etwas kommen, denke ich, dass ich dir nicht helfen kann, ohne den ganzen Code zu sehen, sorry. –