2010-08-12 4 views
1

Lecteur longue durée, première fois.Boucle frustrante dans Internet Explorer avec la méthode live jQuery

Travaillant sur un site Web au http://www.howardpitch.com/, et je suis vraiment frustrant avec le quiz sur la première page. Vous sélectionnez l'une des quatre réponses et cliquez sur le bouton "Vérifier ma réponse". Cela vous dira si vous aviez raison ou tort et vous présentera un bouton pour la question suivante. Vous pouvez jouer tout au long de la journée dans Firefox, Chrome, etc. mais dans Internet Explorer il continue à boucler sur la même question après avoir répondu au premier. La méthode live de jQuery est utilisée avec l'événement click pour gérer la question suivante et la renvoyer en première page via un appel AJAX car le bouton "Next Question" n'existe pas lorsque le DOM est chargé pour la première fois.

Toute orientation/amélioration de mon code est grandement appréciée. La critique constructive et pertinente est comment nous apprenons.

C'est ce que j'ai sur le côté jQuery.

 
$('.btnCheckAnswer').live('click', function(e){ 
    $.ajax({ 
     url:'/includes/quiz-check.php', 
     type:'POST', 
     data:$('#frm_quiz').serialize(), 
     success:function(data){ 
      $('#game').replaceWith(data); 
     } 
    }); 
    e.preventDefault(); 
    return false; 
});

 
$('.nextQuestion').live('click', function(e){ 
    $.ajax({ 
     type:'GET', 
     url:'/includes/quiz.php', 
     success:function(data){ 
      $('#game_response').replaceWith(data); 
     } 
    }); 
    return false; 
}); 

Merci très gentiment à une avance.

Répondre

1

Cela peut être un problème de mise en cache. Essayez de régler l'option cache false, et/ou à l'aide d'un coupe-cache (ce qui est un nombre aléatoire, ou horodatage, passé avec l'URL):

$('.nextQuestion').live('click', function(e){ 
    $.ajax({ 
     type:'GET', 
     cache: false, 
     url:'/includes/quiz.php?' + Math.round(new Date().getTime()/1000), 
     success:function(data){ 
      $('#game_response').replaceWith(data); 
     } 
    }); 
    return false; 
}); 

Vous pouvez également essayer d'utiliser une requête POST à ​​la place.

+0

le cache ajoutera un horodatage et empêchera IE de mettre en cache la requête –

+0

Oui, il le fera (je viens de le lire moi-même). Je pense que je vais laisser la chose timestamp de toute façon, cependant. – karim79

+0

Vous apprenez quelque chose de nouveau tous les jours. Merci beaucoup pour votre réponse rapide. J'ai ajouté le cache: false, et le problème a été résolu. –

Questions connexes