我的网站上有一项功能:删除没有页面刷新。用户只需按“删除”,浏览器就会发送Ajax请求。它将使用id参数加载'delete'脚本。
一切顺利。但由于数据库的引用完整性,它并不是很好。例如,可以删除某些人居住的街道。
我想升级我的脚本。我想添加一个检查来删除脚本,如果某些“人”连接到“街道”表,则不要删除数据。
按钮点击的jQuery处理程序:
$('body').on('click', '.deleteStreet', function()
{
var id = $(this).attr('id');
var hideMe = $(this).parent().parent();
var dataString = 'id=' + id;
if(confirm("Are you sure you want to delete street? It is possible some people living there!"))
{
$.ajax({
type: "GET",
url: "/index.pl?mode=streets&action=delete",
data: dataString,
cache: false,
success: function(e)
{
hideMe.hide();
}
});
return false;
}
});
无论如何都会调用脚本,现在无论如何都会删除数据。我现在可以添加一些检查来删除脚本并且它不会删除,但是jquery脚本无论如何都会工作并且无论如何都会隐藏表行(因为请求发送正常,没有404等)
1)是否可以看到删除脚本结果并隐藏或不隐藏行?例如,它将返回true或false,js脚本将捕获它并显示有关删除或不删除数据的消息。
2)这个问题是由我网站的结构引起的。 index.pl
上有一些开关,并根据查询加载适当的脚本(mode=street
然后加载street.pl
,mode=user
然后加载users.pl
等。因此它将显示在delete.pl
脚本之前加载的所有数据,并且无法检查脚本返回的true或false。
有任何帮助吗? :)谢谢!
P.S。:对于我可怕的英语,我感到非常抱歉。
答案 0 :(得分:0)
您可以在成功回调的第一个参数中获得ajax调用的结果。例如:
$.ajax({
type: "POST",
url: "/index.pl?mode=streets&action=delete",
data: dataString,
cache: false,
success: function(e)
{
if(e === '1'){
hideMe.hide();
}
}
});
尝试将结果记录在控制台中以进行测试:console.log(e)
。
要删除数据,您应该使用POST请求(或DELETE但不是所有浏览器都支持)。
我不知道你的数据(街道)是怎样的,但另一种方法是在删除请求结果中返回json对象中的所有现有街道。并刷新所有行。