Jquery привязать к ссылке, выполнить некоторое сообщение JQuery, а затем загрузить ссылку - PullRequest
1 голос
/ 27 июля 2011

существует ли чистый способ привязать сообщение jquery к ссылке и после того, как сообщение выполнено, чтобы загрузить ссылку, как это должно происходить в обычном режиме?

вот мой код:

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

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

на данный момент я отключаю щелчок, чтобы позволить моему сценарию сделать POST, но я хочу, чтобы ссылка была выведена на целевую страницу после того, как мой POST был вызван и успешно выполнен. Я думаю, что мне нужен обратный звонок, но я не могу найти хороший способ добиться этого.

Заранее спасибо,

Ответы [ 3 ]

4 голосов
/ 27 июля 2011

Добавьте функцию успеха к вашему вызову .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;
        }
    );
} );
0 голосов
/ 27 июля 2011

Вы можете перенаправить на ссылку URL после возврата $.post.

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

});
0 голосов
/ 27 июля 2011
$("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);
    } );
});

Вы должны как-то предотвратить "двойной щелчок".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...