Baustelle:Periodische AJAX Requests mit MooTools

Aus Joomla! Dokumentation
Wechseln zu: Navigation, Suche

24px-Tip.png 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

[Bearbeiten] Siehe auch

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Sonstiges
Team Navigation
Werkzeuge