Return aus Ajax Skript in eine bestimmte Reihe

Phil1001

Grünschnabel
Hi,

bräuchte mal Hilfe bei einem Projekt. Es geht um folgendes. Auf einer PHP-Seite wird eine Liste aus einer Datenbank generiert. Artikel 1 - X werden angezeigt. Registrierte User können per Klick auf ein GIF die Artikel ihrer eigenen Liste hinzufügen oder wieder runterwerfen. Dies passiert über AJAX Skript und den Aufruf einer separaten PHP-Datei. Soweit alles in Ordnung. Das AJAX gibt das Ergebnis auch zurück (vorher Nicht-auf-Liste, nachher Auf-Liste oder umgekehrt), alles super. Jetzt kommt der Haken.

Das PHP gibt über das AJAX wie gesagt den neuen Status zurück... aber ich kriege ihn nicht an die richtige Stelle.

Die Liste baut Rows in einem Table auf. In jeder Row gibt's in der letzten Spalte das besagte GIF, wo der User draufklicken kann. Den Return aus dem Ajax landet aber immer in der ersten Reihe, da ich in dem Ajax-Skript ja nur eine ID für den Return hinterlegen kann. Ich bräuchte also eine Methode, wie ich dem Script mitgeben kann, in der wievielten Reihe das Script ursprünglich aufgerufen wurde, damit das Return dann auch in der korrekten Reihe landet.

Das Skript:

<script>
function UpdateList(str)
{
if (str=="")
{
document.getElementById("Result").innerHTML="";
return;
}
if (window.XMLHttpRequest) xmlhttp=new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari
else xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5

xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200) document.getElementById("Result").innerHTML=xmlhttp.responseText;
}
xmlhttp.open("POST","content/PHPScripts/UpdateList.php",true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(str);
}

</script>

Die Reihe in der PHP-Seite, wo es aufgerufen wird und wieder reinmuss:

echo "<td valign='middle' align='center'><div id='Result'>";

$String_1 = $String_ChangeList."&mode=5";
$String_2 = $String_ChangeList."&mode=1";

echo "<a onClick=UpdateList('".$String_1."')><img src='content/images/Buttons/Checklist_Box1.jpg'></a>";
echo "<a onClick=UpdateList('".$String_2."')><img src='content/images/Buttons/Checklist_Box0.jpg'></a>";

echo "</div></td>";
 
Zuletzt bearbeitet:
Mach doch mal eine debug-ausgabe:
"console.log('readyState:' + xmlhttp.readyState);console.log('status:' + xmlhttp.status);"
vor der Zeile:
"if (xmlhttp.readyState==4 && xmlhttp.status==200) "

Und schau im Firbug nach was in der console ausgegeben wird.

PS: hast du mal jQuery versucht, da sind ajax-request deutlich leichter und solider.
 
Zurück