2010-11-10 4 views
2

J'ai regardé quelques autres questions, et j'ai essayé quelques options, mais encore un peu de perte.jquery ne met pas à jour DOM immédiatement?

EDIT - JUSTE POUR AFFICHER L'APPEL AJAX ACTUAL 'ETRE ..

$.ajax({ 
    type: 'GET', 
    url: 'AJAXget/getPostcodeCheck.ashx', 
    data: 'postcode=' + postcode, 
    async: false, 
    timeout: 10000, 
    success: postcodeCallback, 
    error: function() { 
     alert('Sorry, there was an issue contacting the server.. please retry.'); 
     return; 
    } 
}); 

je la fonction de liaison jQuery AJAX suivante, où je veux montrer quelque chose est le chargement par exemple ..

$('#' + btnID).bind('ajaxStart', function() { 
    $('#' + btnID).append('<div>loading</div>'); 
}); 

Ceci est juste un exemple basique. J'ai utilisé une fonction addClass pour l'élément (#btnID est un div), mais encore une fois rien ne semblait se produire directement.

J'ai mis une instruction d'alerte dans la fonction pour tester que l'ajaxStart est en train de se déclencher, et cela semble être .. donc je devine mon manque de compréhension DOM et/ou jQuery est en faute! c'est-à-dire pourquoi aucune mise à jour/injection DOM n'est affichée immédiatement?

Des pointeurs/idées très appréciés!

+1

Avez-vous essayé '$ (this) .append ('

loading
');'? –

+0

En fait stupidement non! Je pense que je l'avais à l'origine .. mais avec hacher et changer .. va essayer merci! –

+0

En fait essayé $ (ceci) aussi .. même question JUSTE COMME UN SUPPLÉMENT .. IL AJOUTE AU DOM/RAFRAÎCHIR UNE FOIS QUE L'AJAXSTOP COMPLÈTE .. I.E. TOUTES LES FONCTIONS EXCEPTIONNELLES COMPLÈTES EN PREMIER? –

Répondre

1

Essayez coder votre méthode ajaxStart comme ceci:

$('#' + btnID).ajaxStart(function() { 
    $(this).append('<div>loading</div>'); 
}); 

Aussi, voir ce qui se passe lorsque vous simplifiez votre appel jQuery Ajax à ceci:

$.get('AJAXget/getPostcodeCheck.ashx', { postcode: postcode }, function(data) { 
    //$('#yourResultElement').html(data); 
    console.info(data); 
}); 

Si vous utilisez Firebug (vous » Si vous utilisez Firebug, n'est-ce pas?), cliquez sur l'onglet Console et voyez ce qui est retourné.

+0

Merci, j'ai fini par revenir à de vraies basiques et avoir juste une simple mise à jour div quand on clique .. merci! p.s: en utilisant le chrome avec leurs outils de développement .. semblable à firebug bien sûr! –

1

Je suppose que ce code est appelé après que l'utilisateur a cliqué sur un bouton. Dans ce cas, pourquoi vous ne procédez pas comme suit:

  1. Avant l'appel Ajax vous faites: $ ('#' + btnID) .append ('chargement');
  2. En cas de succès ou d'erreur, vous faites: $ ('#' + btnID) .remove();

Je suis sûr que cette approche fonctionnera.

+0

Merci pour votre commentaire.J'ai maintenant ajouté une notification contextuelle très simple déclenchée par l'événement onclick. –

Questions connexes