完成功能后再次调用ajax函数

时间:2013-09-05 17:39:54

标签: javascript jquery ajax

我正在尝试使用完整回调中的其他参数重新执行该函数,但它无法正常工作。它在第一次调用时运行良好,但是当我再次调用它时,它只会警告测试警报两次,并且不会再次执行该函数。我的目的是使用另一个参数执行该函数,即每次用户单击元素时元素的id。我很感激,如果有人能帮助我,我该怎么办?谢谢。 =)

 jQuery(function($){  

    var load_pages = function($page){  
            $.ajax({  
                type       : "POST",  
                data       : {page_name : $page},  
                dataType   : "html",  
                url        : "http://localhost/includes/loadpages.php",
                beforeSend : function(){
                    $("#content").addClass("hide");

                    if($page.substr(0,9) == "categoria"){
                        $("#content").removeClass("hide");
                        $("#the-portfolio").remove();
                    }

                },
                success    : function(data){
                    $data = $(data);  
                    if($data.length){
                        if($page == 'lista_portfolio'){
                            $(".submenu").append($data);
                            $(".submenu").append('<div class="end"></div>');

                        }
                        else{
                            if(!$("#content") ==  false){
                                $("#wrapper").append('<div id="content"></div>');
                            }
                            $("#content").append($data);  
                            $(".foot").animate({bottom: 0},700,'easeOutExpo');
                            $data.fadeIn(500);

                        }   
                    } 
                },  

                error     : function(jqXHR, textStatus, errorThrown) {  
                    alert(jqXHR + " :: " + textStatus + " :: " + errorThrown);  
                }, 

                complete : function() {
                    $("#portfolio_categories_list li a").click(function(){
    alert("test");
                        $categoria = $(this).attr("title").split("Ver todos os posts arquivados em ");
                        load_pages("categoria"+$categoria[1]);
                        return false;
                        });
                }
        });
        }// end load_pages
});

2 个答案:

答案 0 :(得分:0)

尽量不要在完成时调用load_pages(),因为它会导致Recursive function,这会导致内存不足。

相反,请调出您的函数$.ajax,然后绑定事件click,就像这样。

 $(document).on("click","#portfolio_categories_list li > a",function(e){

       e.preventDefault();

       alert("test");
       $categoria = $(this).attr("title").split("Ver todos os posts arquivados em ");
       load_pages("categoria"+$categoria[1]);

 });

答案 1 :(得分:0)

没有看到为什么在完全回调中添加事件处理程序,在将元素追加到dom成功回调后绑定事件应该运行良好。并提供一些控制台/ XHR请求输出,以帮助检查您的问题,把更多的控制台日志而不是警报将有助于跟踪问题