2008-10-27 10 views
0

J'ai mis en place le script Mootools suivantAjax remplacer le texte avec l'image

window.addEvent('domready', function() { 
    var shouts = "timed.php"; 
    var log = $('log_res'); 
    function updateData (url,target) 
    { 
     new Ajax(url,{ 
     method: 'get', 
     update: $(target), 
     onComplete: function() { 
     log.removeClass('ajax-loading');} }).request(); 
     log.empty().addClass('ajax-loading'); 
    } 

    var update = function(){ updateData (shouts, 'log_res'); }; 
    update();   // call it immediately 
    update.periodical(10000); // and then periodically 

}); 

Heres le html

<div id="AJAX"> 
    <h3>Ajax Response</h3> 
    <div id="log_res">exercise</div> 
</div> 

son utilisant moo 1.1. Ce qui précède fonctionne très bien, la page se charge alors que la requête ajax donne un coup de fouet à div id log_res a une classe de ajax-loading pendant sa mise à jour, et quand elle est terminée l'exercice de texte dans la div est remplacé par ajax (Hourra). Mais je veux mettre du HTML personnalisé dans le div WHILST la page est en train de charger, car la classe ajax-loading ne suffit pas pour contenir l'information, je veux aussi mettre un flasher spin dans la div alors que la requête ajax récupère l'information . Espérons que cela a du sens!

Répondre

3

Avec MooTools 1.2, cela fonctionne comme demandé:

function updateData (url, target) 
{ 
    var target = $(target); 
    target.empty().addClass('ajax-loading'); 
    target.innerHTML = "Loading..."; 
    new Request({ 
    url: url, 
    method: 'get', 
    onComplete: function(responseText) { 
     target.removeClass('ajax-loading'); 
     target.innerHTML = responseText; 
    } 
    }).send(); 
} 

Puisque vous n'êtes pas amusant et utiliser MooTools 1.1, je dois creuser un peu ... En fait, je l'ai eu de travail en utilisant à peu près la même configuration que vous avez (notez que j'utilise target au lieu de log, qui a été défini en dehors du champ d'application de cette fonction):

function updateData (url, target) 
{ 
    var target = $(target); 
    target.empty().addClass('ajax-loading'); 
    target.innerHTML = "Loading..."; 
    new Ajax(url, { 
    method: 'get', 
    update: target, 
    onComplete: function() { 
     target.removeClass('ajax-loading'); 
    } 
    }).request(); 
} 
+0

Merci Tomalak, je pense que je n'étais pas assez clair. Mon code original et mon nouveau code fonctionnent bien :) Quand j'utilise le div, la classe est changée en ajax loading, mais je veux aussi ajouter le mot load jusqu'à ce qu'il soit chargé. C'est là que j'ai des problèmes. Je vais mettre à jour mon message original –

+0

Ajout d'un code pour le faire. Si votre "timed.php" est raisonnablement rapide, vous ne verrez pas beaucoup de texte "Loading ..." de toute façon. – Tomalak

+0

Un grand merci pour votre aide tomalak, j'ai dû utiliser target.innerHTML = "chargement mais ça a fonctionné à la fin :) –

1

Pouvez-vous pas faire quelque chose comme ceci:

function updateData (url, target) 
{ 
    var target = $(target); 
    target.innerHTML = 'Please wait...'; 

    //and the rest of the function 
}