我尝试编写一些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;
}
答案 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');
//}
});