Аяксифицируйте гиперссылку, чтобы в случае успеха загружать контент, в противном случае перенаправление по умолчанию - PullRequest
0 голосов
/ 15 июля 2011

У меня есть <a href> гиперссылка.Я использовал JQuery, поэтому при нажатии на ссылку содержимое загружается в div на текущей странице (т. Е. Остается на той же странице), и теперь оно работает.

Однако я также хочу, чтобы в случае сбоя запроса ссылкадействуйте нормально и перейдите по ссылке href.

Я пробовал e.preventDefault ();и вернуть ложь;в случае успеха: функция обратного вызова, но они не в правильной области видимости.Если я помещу e.preventDefault () в вызывающую функцию, я не смогу отменить этот эффект позже.

Вот мой код:

$('a.more-link').click(function(e){
    var postId=$(this).closest('div.post').attr("id").replace(/^post-(.*)$/,'$1');
    var postContent=$(this).parent();
    $.ajax({
        url:"?action=ajax_load_post&id="+postId,
        success:function(data){
            postContent.html(data);
            // Can't access e.preventDefault, nor return false;
        },
        error:function(data){

        }
    });
    e.preventDefault();
});

1 Ответ

0 голосов
/ 15 июля 2011

Не беспокойтесь о preventDefault(), просто перенаправьте пользователя в функции ошибки следующим образом:

$('a.more-link').click(function(e){
    var postId=$(this).closest('div.post').attr("id").replace(/^post-(.*)$/,'$1');
    var postContent=$(this).parent();
    var _this = $(this);
    $.ajax({
        url:"?action=ajax_load_post&id="+postId,
        success:function(data){
            postContent.html(data);
        },
        error:function(data){
            window.location = _this.attr('href');
            return false;
        }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...