2010-08-12 60 views
1

长时间阅读器,第一次海报。在jQuery Live方法的Internet Explorer中令人沮丧的循环

在网站上工作http://www.howardpitch.com/,我在头版测验中遇到了非常令人沮丧的时间。您从四个答案中选择一个,然后单击“检查我的答案”按钮。这会告诉你,如果你是对的还是错的,并为你提供下一个问题的按钮。您可以在Firefox,Chrome等中全天播放此内容,但在Internet Explorer中,您会在回答第一个问题后继续循环播放相同的问题。

jQuery的live方法与click事件一起使用来处理下一个问题,并通过AJAX调用返回到首页,因为当第一次加载DOM时,“Next Question”按钮不存在。

我的代码的任何指导/改进非常感谢。建设性的和相关的批评是我们学习的方式。

这就是我在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; 
}); 

感谢提前非常亲切。

回答

1

它可能是一个缓存问题。尝试cache选项设置为false,和/或使用缓存断路器(这是一个随机数,或时间戳,与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; 
}); 

您也可以尝试使用POST请求代替。

+0

缓存将追加一个时间戳,并保持IE缓存请求 – 2010-08-12 17:19:38

+0

是的,它会(我只是自己读)。无论如何,我想我会留下时间戳的东西。 – karim79 2010-08-12 17:20:43

+0

你每天都会学到新的东西。非常感谢您的快速响应。我添加了缓存:错误,并解决了问题。 – 2010-08-12 18:21:21