jQuery全局变量无法从外部访问

时间:2018-12-20 09:07:24

标签: jquery post

我尝试编写一些jquery删除功能,这是删除的确定。 我的问题是删除之前,我将从数据库检查是否存在id = CategoriIDs int值。如果存在值,则删除无效,否则将被删除。

我为CategoriID设置了全局变量,但它返回的值未定义。

var CategoriIDs;
       $.post("menulerListe.php", {
        }, function() {

                $('.bunuSil').each(function() {
                var CategoriIDs = $(this).attr("value"); 
                    console.log(CategoriIDs);//listin all catids ok.

           });
        });


    $(document).on("click", ".bunuSil", function() {

        var kayitID = $(this).attr("id");
        console.log(CategoriIDs);//returns undefined.

         if(jQuery.inArray(kayitID, CategoriIDs) == -1){
                console.log("it is not there");

             return false;

            }

4 个答案:

答案 0 :(得分:0)

最好的方法是执行ajax调用,以检查数据库中的值,然后根据响应进行响应以执行删除操作。不要存储或使用任何全局变量

答案 1 :(得分:0)

之所以发生这种情况,是因为您在var CategoriIDs = $(this).attr("value");调用的函数范围内重新定义了each()(重新定义是因为再次编写了var)。因此,那里的变量赋值适用于本地作用域,并且该值不会保存在您之前定义的变量中。如果从该语句中删除var,它应该可以工作,但是只有在成功执行ajax调用之后,该代码段才可以到达(您可以在设置了var的地方执行console.log()检查它是否真的被设置)。

答案 2 :(得分:0)

您已声明一个新的CategoriIDs变量2函数,因此您的全局变量未被使用。

var CategoriIDs;
       $.post("menulerListe.php", {
        }, function() {

                $('.bunuSil').each(function() {
                CategoriIDs = $(this).attr("value");  // Removed 'var'
                    console.log(CategoriIDs);//listin all catids ok.

           });
        });


    $(document).on("click", ".bunuSil", function() {

        var kayitID = $(this).attr("id");
        console.log(CategoriIDs);//returns undefined.

         if(jQuery.inArray(kayitID, CategoriIDs) == -1){
                console.log("it is not there");

             return false;

            }

答案 3 :(得分:0)

我用ajax json方法做到这一点

$(document).on("click", ".bunuSil", function() {
    var kayitID = $(this).attr("id");
    var baslik = $(this).attr("value");

    //var confirmation = confirm(baslik + "Silinsin mi?");

    //if (confirmation) {

        $.ajax({
            dataType: "json",
            method: "post",
            url: 'menuler_Baslik_modal_sil.php',
            data: {
                kayitSil: kayitID
            },
            success: function(sonuc) {

                if (sonuc.ok) {
                    kayitListe();

                    $("#kayitSilSonuc").html(sonuc.ok);
                } else {
                    confirm(sonuc.hata);

                }

            }


        });

        //alert('removed');
    //}

});