2011-08-07 17 views
0

私が開発しているスクリプトで助けが必要です。私はいくつかの広告を持っています。
ユーザーが広告をクリックすると、新しいページが開きます。ロード、カウント、プロセスの簡単なフォーム

この新しいページには、ステータスメッセージのdivがあり、その下に大きなiframeがあります。

私はこのようにそれをしたい:ステータスメッセージボックスで
1.、それは「iFrameののコンテンツの読み込み...」と言うべきです(のiFrameのURLが完全にロードされるまでは)
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内にクリックしたときに、ステータスメッセージタイマ意志台無し。したがって:/

+2

あなたはこれまで何を持っていますか? – Mrchief

+0

編集した投稿をチェックしてください。 –

答えて

0

jQuery.ajaxメソッド(またはその派生クラスの1つ)を使用する必要があります。 jQuery.ajaxを使用すると、サーバーに必要なデータを「フォームを実行する」ように送信することができます(前述のとおり)。また、HTMLを取得すると、変数に保存できます。タイムアウトが切れると、タイマーオブジェクトを使用してdivのhtmlを新しいコンテンツに設定できます。

+0

あなたはこれの例をお持ちですか?私はすでにjQueryの$ post関数を使用してフォームを送信し、その結果を戻します。 –

+0

$ .postが成功したときのコールバックハンドラがあります。あなたはhtmlとしてサーバーからの応答を得ます、そうですか? $ .htmlを使用して、そのHTMLをdivコンテナに入れることができます。 –

関連する問題