Ajax请求'onError'处理程序

时间:2014-01-18 16:49:56

标签: javascript jquery

我的网站上有一项功能:删除没有页面刷新。用户只需按“删除”,浏览器就会发送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.plmode=user然后加载users.pl等。因此它将显示在delete.pl脚本之前加载的所有数据,并且无法检查脚本返回的true或false。

有任何帮助吗? :)谢谢!

P.S。:对于我可怕的英语,我感到非常抱歉。

1 个答案:

答案 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对象中的所有现有街道。并刷新所有行。