2012-04-11 6 views
1

ボタンがクリックされると(html onclick)、別のページにリダイレクトされます。 javascriptには、このボタンがクリックされたときにデータベーステーブルに新しい値を書き込む関数があります。私の問題は:リダイレクトは、データがデータベースに書き込まれる前に行われるため、新しいページにはまだ古い値が残っています。これらの手順を逆にする簡単な方法はありますか(リダイレクト、データベースへの書き込み)?アドバイスありがとうリダイレクトする前にデータベースに書き込む

+1

をあなたのボタン(すなわち、おそらく 'event.preventDefault()'や 'リターンfalse'を)のデフォルトの動作を防ぐことができ、その後、あなたのAJAX呼び出しのコールバック関数にリダイレクトをトリガー。 '$ .ajax'を使っていますか? – m90

答えて

0

ajaxを使用してデータを書き込んだ後、ajaxのコールバックでリダイレクトをスローします。これにより、情報がデータベースに書き込まれるまでリダイレクトが行われなくなります。より良い答えを出すためにあなたのコードの一部を見るのに役立ちます。また、これは、あなたがajaxを初めて使う人にとってはjQueryで最もうまくいくでしょう。

0

新しいページにリダイレクトされるコードを、ajax保存要求のコールバックに移動します。このような

何か:

$.post('/savemydata/', { my: 'data' }, function(data) { 
    //the Ajax post has been completed successfully, so now we redirect 
    window.location.href = '/newpage/' 
}); 
+0
+0

どこにもありません。私たちはそれが何であるか分かりません。そうでなければ良い答えに役立つだけかもしれません。 – m90

0

データベースに書き込む方法によって異なります。しかし、新しいページを読み込むときにサーバーにデータを転送する通常の方法と推奨される方法は、URLパラメータのの使用です。あなたは

<form action="/next.php" method="POST"> 
<input type="hidden" name="data" value="values" /> 
<button type="submit" value="Next Page" /> 
</form> 

または

<a href="/next.php?data=values">Next Page</a> 
// also simply usable with 
window.location = "/next.php?data=values"; 

のようなものを使用する場合は、

  • 前(データベースに書き込む)処理することができ、

    1. データがサーバに到達したことを確認することができます
    2. 要求されたページが返されます。

    また、Cookieを使用することもできます。データ値をdocument.cookieに書き込むだけで、サーバーにはと同じリクエストであるが転送され、新しいページが尋ねられます。

  • 1

    だけAJAX呼び出しのコールバックへのリダイレクトを移動し、ボタンが実際にフォームを送信する場合は、

    <a href="#" id="savedata">Save data</a> 
    <script type="text/javascript"> 
        $(document).ready(function() { 
         $("#savedata").click(function() { 
          $.post('/savemydata/', { mydata: 'data' }, function(data) { 
           window.location.href = '/newpage/' 
          }); 
          return false; 
         }); 
        }); 
    </script> 
    

    を持っていると言う、あなたはおそらく代わりにボタンを非表示して、直後にそれをトリガーする場合がありますあなたの投稿は、単に追加することによって:

    $("#buttonID").trigger('click'); 
    
    +0

    ありがとうございます! –

    関連する問題