2011-07-27 3 views
1

jqueryポストをリンクにバインドするためのポストが実行された後、正常にリンクする必要があります。私は私のスクリプトはPOSTを行うことができるようにする]をクリックし無効に今のJqueryはリンクにバインドし、いくつかのポストjqueryを実行してからリンクをロードします。

$("a").bind('click', function(e){ 
    // disable click while we make a post request 
    e.preventDefault(); 

    // make post request 
    $.post('/blablabla/', { "datas" : mydatas }); 
}); 

、私は私のPOSTが呼び出され、正常に実行された後、リンクがターゲットページに持参したい:

は、ここに私のコードです。私はコールバックが必要だと思うが、それを達成する良い方法を見つけることはできない。事前による

おかげで、

答えて

4

がクリックされたリンクのhrefwindow.locationを変更し、あなたの.post通話に成功機能を追加します。

$('a').bind('click', function(e) 
{ 
    var url; 

    # disable click while we make a post request 
    e.preventDefault(); 

    # get the url from the href attr 
    url = = $(this).attr('href'); 

    # make post request 
    $.post(
     '/blablabla/', 
     { 
      datas: mydatas 
     }, 
     function() 
     { 
      # send browser to url 
      window.location = url; 
     } 
    ); 
}); 

あなたはリダイレクトがPOSTに失敗した場合でも、場所を取るしたい場合は、.ajax()の使用に切り替えるとcompleteオプションを使用することができます。

$('a').bind('click', function(e) 
{ 
    var url; 

    # disable click while we make a post request 
    e.preventDefault(); 

    # get the url from the href attr 
    url = = $(this).attr('href'); 

    # make post request 
    $.ajax({ 
     url: '/blablabla/', 
     type: 'POST', 
     data: { 
      datas: mydatas 
     }, 
     complete: function() 
     { 
      # send browser to url 
      window.location = url; 
     } 
    ); 
}); 
+0

大変ありがとうございます:) – oliver

0
$("a").bind('click', function(e){ 
    # disable click while we make a post request 
    e.preventDefault(); 

    # Save the link url 
    var url = $(this).attr('href'); 

    # make post request 
    $.post('/blablabla/', { "datas" : mydatas }, function() { 
     # Post successful 
     document.location(url); 
    }); 
}); 

あなたは「ダブルクリック」を防ぐ必要がありますどういうわけか。

0

$.postが返された後、urlのhrefにリダイレクトできます。

$("a").bind('click', function(e){ 

     # disable click while we make a post request 
     e.preventDefault(); 
     var url = $(this).attr('href'); 

     # make post request 
     $.post('/blablabla/', { "datas" : mydatas }, function(){ 
      window.location = url; 
     }); 

}); 
関連する問題