2012-02-08 9 views
1

をautorefreshingしながら、上のラジオボタンの世論調査ではあり私は世論調査を含むページをautorefreshingために、次のjQueryのを書かれているページ

function update() { 
    var vote_radio = $('input:radio[name=vote_radio]:checked').val(); 
    $.ajax({ 
    type: 'POST', 
    url: 'index.php', 
    data: 'refresh=true&maintain_radio='+ vote_radio, 
    timeout: 2000, 
    success: function(data) { 
     $("#current_body").html(data); 
     $("#notice_div").html(''); 
     $("[name=vote_radio]").filter("[value="+vote_radio+"]").attr("checked","checked"); 
     window.setTimeout(update, 2000); 
    }, 
    error: function (XMLHttpRequest, textStatus, errorThrown) { 
     $("#notice_div").html('Timeout contacting server..'); 
     window.setTimeout(update, 60000); 
    } 
}); 
}; 

$(document).ready(update); 

(現在の勝利オプションを更新し続けるために)jQueryを使ってラジオボタンの設定「vote_radio」というページには、私はまた、アヤックスに、それを使用してサーバーへの回答次のコードを使用します。

$(function() { 
    $('.error').hide(); 
    $('.failure').hide(); 
    $('.success').hide(); 
    $(".vote_submit").click(function() { 
     if (!$("input[@name='name']:checked").val()) { 
      $('.error').show(); 
      return false; 
     } 
     var vote_radio = $('input:radio[name=vote_radio]:checked').val();; 
     var dataString = 'vote_radio='+ vote_radio; 
     $.ajax({ 
      type: "POST", 
      url: "index.php", 
      data: dataString, 
      success: function() { 
      $('.success').show();    
      $('.failure').hide();    
      }, 
      error: function() { 
      $('.failure').show();    
      $('.success').hide();    
      } 
     }); 
     return false; 
    }); 
}); 

私はこのすべてを持ってる問題はあるが、そのユーザがページWHILE彼らのオプションを選択した場合自動的にリフレッシュされると、選択したラジオオプションがページが自動リフレッシュを開始したときはどうでしたか。これはイライラしています。

また、.successクラスが2番目のスクリプトによって表示されるように指示されている場合、最初のスクリプトがページを自動更新するとき、成功クラスは再び非表示になります。

答えて

0

vote_radio要素をAJAX呼び出しを開始する前の値に戻すのはなぜですか?

あなたは現在の値を保つように、ちょうど(それはまだを提出せずに変更した場合でも)を、右のそれを上書きする前にそれを読ん

ので、ちょうど

success: function(data) { 
     var vote_radio = $('input:radio[name=vote_radio]:checked').val(); 
     $("#current_body").html(data); 
     $("#notice_div").empty(); 
     $("[name=vote_radio]").filter("[value="+vote_radio+"]").attr("checked","checked"); 
     window.setTimeout(update, 2000); 
    } 

に成功コールバックを変更

しかし、一般的に正しい方法は、ページ全体ではなく、更新が必要なページの部分だけを更新することです。それはAJAXの全ポイントです。

+0

お返事ありがとうございます。しかし、あなたのコールバック関数で代用すると、関数全体が実行されません。 本当に必要なのは、ページを更新する必要があるかどうかを確認し、そうであればAJAXを実行することです。ページの内容は120秒ごとに変わります。バックグラウンドでタイムチェッカーをどういう形で維持しているか、時間がゼロ以下になるとリフレッシュ機能を呼び出せるように考えていますか? もう一度ありがとうございます。 – dplanet

関連する問題