成功完成Ajax响应后启动jQuery行?

时间:2015-01-16 12:18:38

标签: javascript jquery ajax response

我试图在成功的Ajax响应之后启动一些jQuery($('#slider').leanSlider();)。把它放在成功的回调中是不行的。我发现answer here我认为是相关的,但我很难理解我到底要做什么。在成功进行Ajax响应后,如何才能启动该行?

$('.post-link').click(function(e) {
    e.preventDefault();

    var post_id = $(this).attr('rel'),
        ajaxURL = site.ajaxurl;

    function projectShow() {
        $.ajax({
            type: 'POST',
            url: ajaxURL,
            data: {'action': 'load-content', post_id: post_id },
            success: function(response) {
                $('#project-container').html(response);
                $('#slider').leanSlider();    <--// This isn't initiating
                }
                return false;
            }
        });
    }
    projectShow();
});

2 个答案:

答案 0 :(得分:1)

您链接的答案不适用于此处。如果您在projectShow()电话后有代码,则适用。由于有问题的代码在回调中,它只会在成功时执行。

我注意到代码中的大括号已关闭,因此这可能是第一个问题。 return false;之前的大括号会关闭回调,这会使整个配置对象无效。如果这不是复制和粘贴错误,则会阻止调用。

检查您的AJAX通话是否真的成功并恢复成功。否则,永远不会调用回调。但是,除了语法错误之外,您的代码对我来说还不错。

答案 1 :(得分:0)

$('.post-link').click(function(e) {
    e.preventDefault();

    var post_id = $(this).attr('rel'),
        ajaxURL = site.ajaxurl;

    function projectShow() {
        $.ajax({
            type: 'POST',
            url: ajaxURL,
            data: {'action': 'load-content', post_id: post_id },
        }).done(function(response){
            $('#project-container').html(response);
            $('#slider').leanSlider();    <--// This isn't initiating
            return false;
        }).fail(function(error){
            //handle error
        });
    }
    projectShow();
});

.done()是成功的jQuery.ajax handling continue responses: "success:" vs ".done"?

&#34; jqXHR.done(function(data,textStatus,jqXHR){}); 成功回调选项的替代构造,.done()方法替换了不推荐使用的jqXHR.success()方法。有关实现的详细信息,请参阅deferred.done()。&#34;
http://api.jquery.com/jquery.ajax/