Jquery绑定到链接,执行一些post jquery然后加载链接

时间:2011-07-27 17:05:16

标签: jquery post callback

是否有一种干净的方法来绑定链接上的jquery帖子,并在执行帖子后加载链接,因为它应该正常工作?

这是我的代码:

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

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

现在我禁用click以允许我的脚本进行POST,但是我想在调用POST并成功执行POST后将链接带到目标页面。我想我需要一个回调但是找不到实现它的好方法。

先谢谢,

3 个答案:

答案 0 :(得分:4)

.post来电中添加成功功能,将window.location更改为所点击链接的href

$( '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;
        }
    );
} );

答案 1 :(得分: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);
    } );
});

你应该以某种方式阻止“双击”。

答案 2 :(得分:0)

您可以在$.post返回后重定向到网址的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;
        });

});