Hallo alle zusammen,
in der Beilage der aktuellen T3N wird erklärt, wie man eine eigene kleine Ajax-Extension schreiben kann. Es geht darum, die aktuelle Serverzeit im Sekundentakt zu aktualisieren (ich weiß, in der Praxis würde man so eine Extension niemals einsetzen - aber darum geht es nicht!!!)
Die Extension wurde auf zwei verschiedenen Wegen realisiert. Einmal klassisch - ohne zuhilfenahme einer Ajax-Bibliothek und das andere mal mit Einbeziehung der xaJax-Bibliothek.
Die klassische Variante habe ich zum Laufen gebracht, aber die xaJax-Variante funktioniert nicht - Javascript-Fehler. Daher hoffe ich mal, dass ihr den Fehler findet.
Hier ist der Code der Mainfunktion der entsprechenden class.tx_arrajaxserverzeit_pi1.php:
<?php
var $xajax;
function main($content,$conf) {
$this->conf=$conf;
$this->pi_setPiVarDefaults();
$this->pi_loadLL();
require_once t3lib_extMgm::extPath('xajax').'class.tx_xajax.php';
$this->xajax = t3lib_div::makeInstance('tx_xajax');
$this->xajax->registerFunction(array ('ladeUndZeigeZeit', &$this, 'ladeUndZeigeZeit'));
$this->xajax->processRequests();
//Javascript Code in den Header
$GLOBALS['TSFE']->additionalHeaderData[$this->prefixId]= $this->xajax->getJavascript(t3lib_extMgm::siteRelPath('xajax'));
$GLOBALS['TSFE']->additionalHeaderData[$this->prefixId].= '<script type="text/javascript"> window.onload = function() {
window.setInterval("' . $this->prefixId . 'ladeUndZeigeZeit();", 1000); }
</script>';
$content .= '<div>Serverzeit: <span id="Serverzeit"></span></div>';
return $this->pi_wrapInBaseClass($content);
function ladeUndZeigeZeit() {
$content = date("H:i:s");
$antwort = new tx_xajax_response();
$antwort->addAssign("Serverzeit", "innerHTML", $content);
return $antwort->getXML();
}
?>
Den Code habe ich aus dem Listing, der auch von T3N bereitgestellt wird:
https://www.yeebase.com/fileadmin/listings/t3n_listings_1325.zip
Was mich wundert, bzw. was ich nicht verstehe:
1)
Warum muss ich außerhalb der Mainfunktion noch "var = $xajax;" definieren?
2)
Wenn ich mir den Code der von Typo3 erstellten Seite ansehe, wird im Sekundentakt die Funktion tx_arrajaxserverzeit_pi1ladeUndZeigeZeit() aufgerufen (s.u.) die ich im Quellcode aber gar nicht finde!
Hier ist der entsprechende Quellcode der ausgebenen Seite:
<script type="text/javascript">
var xajaxRequestUri="http://iceberg.de/typo3/index.php?id=24&no_cache=1";
var xajaxDebug=false;
var xajaxStatusMessages=false;
var xajaxWaitCursor=true;
var xajaxDefinedGet=0;
var xajaxDefinedPost=1;
var xajaxLoaded=false;
function xajax_ladeUndZeigeZeit(){return xajax.call("ladeUndZeigeZeit", arguments, 1);}
</script>
<script type="text/javascript" src="typo3conf/ext/xajax/xajax_js/xajax.js"></script>
<script type="text/javascript">
window.setTimeout(function () { if (!xajaxLoaded) { alert('Error: the xajax Javascript file could not be included. Perhaps the URL is incorrect?\nURL: typo3conf/ext/xajax/xajax_js/xajax.js'); } }, 6000);
</script>
<script type="text/javascript">
window.onload = function() {
window.setInterval("tx_arrajaxserverzeit_pi1ladeUndZeigeZeit();", 1000); }
</script>
Vielleicht sieht ein Profi auf den ersten Blick woran es liegt?
Würde mich über Hilfe sehr freuen.
Gruß an alle
canetti2