2012-03-06 13 views
0

HTMLボタンをクリックすると呼び出されるJS関数を持つASPページがありますが、ボタンをクリックするたびにページがリロードされ、初期状態。ボタンのクリックでJS関数を呼び出すと、ページがリフレッシュされます

私は私がリフレッシュするためにページを引き起こしている問題であるかを把握しようとしたこれらのタグに

<% 
Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1)); 
Response.Cache.SetCacheability(HttpCacheability.NoCache); 
Response.Cache.SetNoStore(); 
%> 

<meta http-equiv="Expires" CONTENT="0"/> 
<meta http-equiv="Cache-Control" CONTENT="no-cache"/> 
<meta http-equiv="Pragma" CONTENT="no-cache"/> 

を使用して、両方のサーバーとクライアント側のキャッシュを無効化していJS関数を呼び出すのではなく、ボタンをクリックするだけですが、ダイスはありません。ここを尋ねたよう


は、ボタンのコード

<button class="textinput" id ="reloadData" onclick="reloadData()" title="Reload Data">Refresh</button> 

  function reloadData() { 
      var DPS = document.getElementById("datepickerStart").value; 
      var DPE = document.getElementById("datepickerEnd").value; 

      var startDP = new Date(DPS); 
      var endDP = new Date(DPE); 

      var startDate = (startDP.format("isoDateTime")).replace(/:/g, '\\:'); 
      var endDate = (endDP.format("isoDateTime")).replace(/:/g, '\\:'); 

      layer.redraw(); 
      } 

と呼ばれる関数である私は、これはそれがあるので、呼び出された関数で何かを持っているとは思いませんフィルターの値を再調整するだけです。

+0

ボタンをクリックしたときに実行する必要があるボタンコードとコードが必要です。 – Eli

+1

これはキャッシングとは関係ありません。 –

+0

'onclick =" reloadData(); false false; ' – Stefan

答えて

1

ボタンがポストバックを引き起こす可能性があります。フォーム内に存在しますか?

ポストバックを防ぐためにjavascript関数をfalseに戻してください。

+0

ボタンはフォームにはなく、すべてがクライアント側で処理されていますが、実際には私はデータベースを扱っていません。 – TheZelus

0

reloadData<... id ="reloadData" onclick="reloadData()" ...>での再利用は、一部のブラウザでは問題が発生する可能性がありますが、それは期待できません。いずれの場合においても

、次のように、むしろHTMLよりもJavaScriptでのonclickハンドラを装着してみてください。

HTML:

<button class="textinput" id="reloadData" title="Reload Data">Refresh</button> 

Javascriptを:

window.onload = function(){ 
    var reloadDataButton = document.getElementById('reloadData'); 
    var DPS = document.getElementById("datepickerStart"); 
    var DPE = document.getElementById("datepickerEnd"); 
    if(reloadDataButton && DPS && DPE){ 
     reloadDataButton.onclick = function(){ 
      var startDP = new Date(DPS.value); 
      var endDP = new Date(DPE.value); 

      var startDate = (startDP.format("isoDateTime")).replace(/:/g, '\\:'); 
      var endDate = (endDP.format("isoDateTime")).replace(/:/g, '\\:'); 

      layer.redraw(); 
      } 
     }; 
    } 
}; 

(とマージ必要に応じて既存のwindow.onloadハンドラ)

これで問題が解決されず、ボタンが真にフォームにない場合、問題はlayer.redraw();(またはwindow.onerrorハンドラ)にある必要があります。 layer.redraw();をコメントアウトして、どうなるか見てみてください。