简单的加载,计数和处理形式

时间:2011-08-07 21:33:28

标签: javascript jquery timer loading progress

我正在开发的脚本需要一些帮助。我有一些广告 当用户点击广告时,将打开一个新页面。

在这个新页面上,会有一个div状态消息,而div下面会有一个大iframe。

我想要这样:
 1.在状态消息框中,它应显示“正在加载iFrame的内容...”(直到iFrame的网址已满载)  2.它应从X秒/加载条倒计时。
 3.当它达到零时,表格应该运行,并在状态div中输出数据。

有人可以帮我解决这个问题吗?它应该都是用jQuery完成的,没有任何重载。

我有这么多:

   var countDownTimer = null;
    var seconds = <?php echo $exposure[$r['exposure']]; ?>;

    function setCountDownTimer(){
      if(countDownTimer)
        clearTimeout(countDownTimer);

      countDownTimer = setTimeout(updateCountdown, 1000);
    };

    function updateCountdown() {
          countDownTimer = null;
          seconds--;

          if (seconds > 0) {
             $("#countdown").text("You must view this advertisement for " + seconds + " seconds.");
             //$('#progressbar').progressbar({ value: Math.round((seconds/10)*100) });
             setCountDownTimer();
          } else {
             submitForm();
          }
     }

// on document load:
$(function() {

   $("#progressbar").progressbar({ value: 0 });

   // set "waiting" message:
   $("#loadingStatus").html("Waiting for your advertisements to load...");

   // on iframe load:

   $('#iFrame').load(function() {

       $("#loadingStatus").html($("#isDone").html());

       //Attached click event to the link inside iframe to restart the timer
       var iframe = $('#iFrame');
       iframe.contents().find("linkSelector").click(function(){  
         window.top.setCountDownTimer();  
       });

   });

   setCountDownTimer();
});



function submitForm() {
                $("#countdown").empty().html('<img src="..ify/dream/images/loading.gif" />');
                $.post(
                    'index.php?i=v&p=k&key=DSF79SADFHSA7D9FGSAD097FSAD7F9779ASDFGS9', 
                    $('form').serialize(),
                    function (data) {
                        proccessData(data);
                    }
                ); 

}  

function proccessData (data) {
            $('#statusF').hide().html('');

            if(data=='success'){
                $('form').fadeOut();
                $('#countdown').addClass('noti-success').html('Advertisement validated!').slideDown();
                redirect("?i=l");  
            }
            else {
                $('#countdown').addClass('noti-error').html(data).fadeIn();
            }
        }

上面代码的问题在于,当用户例如点击iframe时,状态消息计时器将会搞乱。所以:/

1 个答案:

答案 0 :(得分:0)

您需要使用jQuery.ajax方法(或其衍生产品之一)。使用jQuery.ajax,您可以将所需的任何数据发送到服务器以“运行表单”(如您所述),当您获得html时,可以将其保存在变量中。然后,您可以使用计时器对象在超时到期时将div的html设置为新内容。