我的网站上有一个功能:删除而不刷新页面。用户只需按下"删除",浏览器就会发送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。
有什么帮助吗?:)非常感谢。
附言:我很抱歉我糟糕的英语。
您可以在成功回调的第一个参数中获得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对象中返回所有现有的街道。并刷新所有行。