Hallo,
ich habe heute angefangen, mich mit Ajax zu beschäftigen. Dazu habe ich (natürlich) den Wikipedia-Artikel dazu gelesen, und bin dem Link zum entsprechenden Wiki-book gefolgt.
Ich benutze das Prototype-Framework.
PHP programmiere ich schon seit ein paar Jahren oft und gerne, und habe auch schon einige kleinere wie größere Projekte hinter mir.
Im Moment programmiere ich eine Auflistung aller MySQL-Tabellen. Bei Klick auf die Tabelle soll sich eine Auflistung der Felder der entsprechenden Tabelle anhängen (JavaScript appendChild).
Mit Hilfe der Dokumentation von Prototype habe ich mir Folgendes zusammengebastelt:
function expand(i, name)
{
var ulname="ul"+i;
var ul=document.getElementById(ulname);
if(ul.style.display=="none")
{
ul.style.display="block";
var myAjax = new Ajax.Updater(ulname, "ajax_felder.php",
{
method: get,
parameter: {tblname: name},
onFailure:fehler,
onComplete:erfolg
}
);
}
else
{
ul.style.display="none";
}
}
Im HTML sieht das das so aus:
<div class="tables" id="table0">
<a href="javascript:expand(0,'tabelle_a');"><img src="img/b_sbrowse.png" alt=""></a>
<a href="tbl_browse.php?t=tabelle_a" target="right">tabelle_a</a>
<ul id="ul0" style="display:none"></ul>
</div>
<div class="tables" id="table0">
<a href="javascript:expand(0,'tabelle_b');"><img src="img/b_sbrowse.png" alt=""></a>
<a href="tbl_browse.php?t=tabelle_b" target="right">tabelle_b</a>
<ul id="ul1" style="display:none"></ul>
</div>
Die ul sind vorerst alle per CSS auf display:none gestellt, und werden erst beim Klick auf den Link, der die JavaScript-Funktion "expand" aufruft, eingeblendet. Ist das ul schon eingeblendet, wird es wieder ausgeblendet. Es entsteht also eine klassische Menü-Struktur.
Folgendes Problem stellt sich mir nun:
1. Die Funktionen fehler und erfolg werden scheinbar nicht aufgerufen. Diese existieren (ich habe sie hier nur nicht genannt), und geben nur "erfolg!" oder "kein erfolg!" als alert aus. Jedenfalls wird keine der Funktionen aufgerufen.
2. Was muss im PHP-Skript stehen - echo oder return? - damit der entsprechende Output in die ul eingetragen wird?
Lg
Homer