0

我对 JQuery ajax 调用有疑问,问题是这样的:

如果我连续多次使用相同的查询,每次使用该方法时浏览器都会开始变慢。不知道怎么说正确,所以我举个例子。

$("#categAdProdIes").on("change",function(){
    var categId=$("#categAdProdIes").val();
    $.ajax({
        type:"GET",
        url:"php/facturi/prodAjax.php",
        data:{categId:categId}
    }).done(function(rez){
            $("#prodAdIes").html(rez);
        });
});

上面的方法(使用 ajax 在另一个选择菜单中获取选项的选择菜单),如果我连续使用它一次,页面会变得越来越慢,直到它冻结。整个项目是一个具有动态内容的 Web 应用程序(全部通过 .ajax() 加载)。

有人可以告诉我为什么会出现这个问题,我该如何解决?

更新#2:我解决了这个问题,但我不明白为什么。我有一个按钮,它使包含选择元素的 div 可见,我将函数放在该函数中,问题就解决了,但我不知道为什么,所以我以后可以知道。

这是功能:

$("#badProdIes").on("click",function(){
        $(".adaugProdIesForm").css("display","block");
    });

这就是修复后的样子:

$("#badProdIes").on("click",function(){
    $(".adaugProdIesForm").css("display","block");
    $("#categAdProdIes").on("change",function(){
        var categId=$("#categAdProdIes").val();
        $.ajax({
            type:"GET",
            url:"php/facturi/prodAjax.php",
            data:{categId:categId}
        }).done(function(rez){
                $("#prodAdIes").html(rez);
            });
    });
});
4

3 回答 3

0

可能是ajax缓存问题..尝试:

$.ajaxSetup({ cache: false });
于 2013-09-27T14:31:36.787 回答
0

这是我目前唯一能想到的,但如果你经常运行这个函数,我会缓存你的选择器,即使你使用的是 id,这是一件好事。

var select = $("#categAdProdIes");
var categId = $("#categAdProdIes");
var container = $("#prodAdIes");

select.on("change",function(){
    $.ajax({
        type:"GET",
        url:"php/facturi/prodAjax.php",
        data:{categId:categId.val();}
    }).done(function(rez){
        container.html(rez);
    });
});

不确定会给您带来多少性能提升,但值得一试,

于 2013-09-27T14:34:46.587 回答
0

我已经解决了这个问题,所以我会在这里发布,以防有​​人遇到同样的问题。这只是因为这些函数在 AjaxComplete 下运行,并且有很多查询绑定并通过使用这样的.off()函数来解决它:

$("#badProdIes").off().on("click",function(){
        $(".adaugProdIesForm").css("display","block");
    });
于 2013-10-21T07:45:15.313 回答