Dobrý den,
předem se omlouvám za špatné zařazení mého příspěvku, ale jelikož je v češtině zkryto pod zkratkou AJAX Asynchornní JavaScript a XML, tak jsem si ho netroufl dát jinam než pod samotný JavaScript.
Zasekl jsem se na jednom problému. Tahám data z databáze. U každého prvku pak mohu rozkliknout na více informací. To mi právě zajišťuje AJAX. Informace se vždy rozkliknou, ale nesprávné. Lepší je vše ukázat na příkladu:
Nejprve napojím stránku na databázi, tento kód přeskočme.
Poté začnu pracovat s požadovanou tabulkou, přes cykl vypíši všechny řádky. Pokud chce uživatel více informací o dané kočce, zmáčkne na tlačítko "Více informací" a přitom se přes OnClick zavolá na ZobrazDetaily.
$select = "SELECT * FROM kocky;";
if(($data = mysql_query($select, $this->link)) == 0)
{
self::error_msg('Chyba v dotazu.');
return 0;
}
print '<div class="menu_nadpis">Složení základny</div><div id="divZobraz">';
while($row = mysql_fetch_array($data))
{
<table>
<tr>
<th>Jméno</th><td>'.$row['jmeno'].'</td>
</tr>
<tr>
<th>Věk</th><td>'.$row['vek'].'</td>
</tr>
<tr>
<td colspan=2>
<input type="button" value="Více informací" onclick="ZobrazDetaily(this.value)";>
</td>
</tr>
</table>
}
print '</div>';
}
Tak a teď jdu na AJAX. Funkce ZobrazDetaily apod. Rozhodl jsem se používat formu GET, výsledek ( zmiňovaných víc informací pro uživatele o kočce ) se bude načítat z popis_kocky.php a to v divu "divZobraz, který už mimo jiné jsme zakomponovali do předchozího kódu. V souboru popis_kocky se nachazi jen jeji popis, zas nema cenu zobrazovat.
<script language = "javascript">
var xHttp = false;
if (window.ActiveXObject)
{xHttp = new ActiveXObject("Microsoft.XMLHTTP");}
else if (window.XMLHttpRequest)
{xHttp = new XMLHttpRequest();}
function ZobrazDetaily()
{
xHttp.onreadystatechange=ZmenaStavu;
xHttp.open("GET","popis_kocky.php",true);
xHttp.send(null);
}
function ZmenaStavu()
{
if (xHttp.readyState==4 && xHttp.status == 200)
{document.getElementById("divZobraz").innerHTML=xHttp.responseText;}
}
</script>
V čem je problém? Všem zkušeným, pokud jsem to napsal aspoň trochu srozumitelně, již došlo, že to tak nemůže být. Za předpokladu, že je v databázi jeden řádek ( jedna kočka ), tak je vše ok. Ovšem když jsou tam dvě a více, už problém nastává a to v tom, že když si řeknu o informace o druhé kočce, naskočí mi informace o první. To samé se stane, když si řeknu o informace o desáté kočce, ano, naskočí ji informace o kočce první.
Buď se musí ke každému řádku z databáze deklarovat samostatný HttpRequest.
Buď se musí volání z OnClicku více specifikovat.
a nebo je to složitější a mé snažení je na ... .
Předem děkuji za Vaše názory.