Baustelle:Periodische AJAX Requests mit MooTools
Ein AJAX Request soll in bestimmten Zeitabständen aufgerufen werden. Zum Beispiel um eine Logdatei zu überwachen.
Getestet wurde dies mit der MooTools Bibliothek in der Version 1.3 die in der Aktuellen Joomla! Version 1.6 enthalten ist.
Inhaltsverzeichnis |
[Bearbeiten] Request
[Bearbeiten] Javascript
Durch die URL index.php?option=com_XXX&task=foo&format=raw wird die Funktion foo() im Hauptcontroller der Komponente XXX aufgerufen.
var pollRequest = new Request({ method: 'post', url: 'index.php?option=com_XXX&task=foo&format=raw', initialDelay: 1000, delay: 2000, limit: 15000, onRequest: function(){ document.id('pollStatus').set('text', 'running...'); }, onSuccess: function(responseText){ document.id('pollLog').set('text', responseText); }, onFailure: function(){ document.id('pollStatus').set('text', 'Sorry, your request failed :('); } }); function startPoll() { pollRequest.startTimer(); } function stopPoll() { pollRequest.stopTimer(); document.id('pollStatus').set('text', 'idle'); }
[Bearbeiten] HTML
<div id="pollStatus"></div> <div id="pollLog"></div> <a href="#" onclick="startPoll();">start</a> <a href="#" onclick="stopPoll();">stop</a>
[Bearbeiten] PHP
Die Methode im Hauptcontroller:
class XXXController extends JController { function foo() { echo 'Time: '.date('H:i:s'); }//function }//class
[Bearbeiten] Request.JSON
Im Unterschied zum vorhergehenden Beispiel findet die Übergabe der Daten hier im JSON Format statt.
[Bearbeiten] Javascript
Durch die URL index.php?option=com_XXX&task=foo&format=raw wird die Funktion foo() im Hauptcontroller der Komponente XXX aufgerufen.
var pollRequest = new Request.JSON ({ method: 'post', url: 'index.php?option=com_XXX&task=foo&format=raw', initialDelay: 1000, delay: 2000, limit: 15000, onRequest: function(){ document.id('pollStatus').set('text', 'running...'); }, onSuccess: function(response){ document.id('pollLog').set('text', response.text); document.id('pollStatus').set('text', response.status); }, onFailure: function(){ document.id('pollLog').set('text', 'Sorry, your request failed :('); } }); function startPoll() { pollRequest.startTimer(); } function stopPoll() { pollRequest.stopTimer(); document.id('pollStatus').set('text', 'idle'); }
[Bearbeiten] HTML
<div id="pollStatus"></div> <div id="pollLog"></div> <a href="#" onclick="startPoll();">start</a> <a href="#" onclick="stopPoll();">stop</a>
[Bearbeiten] PHP
Die Methode im Hauptcontroller:
Zusätzlich wird hier noch ein "Status" übergeben, welcher im Falle eines Fehlers weitere Informationen enthalten kann.
class XXXController extends JController { function foo() { $response = array(); $s = ''; $s .= 'Time '.date('H:i:s'); $response['text'] = $s; $response['status'] = 'alles gut'; echo json_encode($response); }//function }//class