Javascript Ajax返回状态200,但执行了错误回调:如何捕获来自服务器的消息以编码为json?

Javascript Ajax返回状态200,但执行了错误回调:如何捕获来自服务器的消息以编码为json?,javascript,php,json,ajax,Javascript,Php,Json,Ajax,我的ajax请求返回状态200,但执行错误回调。这是因为php中的命令返回的消息不是json。例如,当php尝试在没有权限的情况下取消文件链接时,就会发生这种情况(请参阅下面的代码)。 如果消息编码为json,则在ajax中执行成功回调。我想在成功回调中管理此邮件。 如何捕获这个没有编码到json权限的消息,并防止执行错误回调 这是代码 siviglia.php if ($_POST['action'] == 'cadice') { $this->barcellona.php($_

我的ajax请求返回状态200,但执行错误回调。这是因为php中的命令返回的消息不是json。例如,当php尝试在没有权限的情况下取消文件链接时,就会发生这种情况(请参阅下面的代码)。 如果消息编码为json,则在ajax中执行成功回调。我想在成功回调中管理此邮件。 如何捕获这个没有编码到json权限的消息,并防止执行错误回调

这是代码

siviglia.php

if ($_POST['action'] == 'cadice')
{
    $this->barcellona.php($_POST['filename']);
}

public function barcellona($filename)
{
    $u = unlink($filename);
    return $u;
}
马德里js

$.ajax({
        url: 'siviglia.php',
        type: 'POST',
        dataType: 'json',
        data: {
            action: 'cadice',
            filename: 'fn',
        },
        success: function(response){
            alert("success");
            }
        },
        error: function (xhr) {
            console.log(xhr.responseText);
        }
    });
如果unlink返回true,则执行成功回调。
如果从linux抛出“No permissions”(无权限)消息,它将在浏览器控制台中返回为
xhr.responseText
,状态为200。如何在成功回调中捕获它?

在删除之前在文件上使用
是可写的()
是的,谢谢我知道;这是一个可能导致该消息的示例,但实际上我希望捕获该消息并在成功回调中进行管理。问题不在于“如何防止此警告”,而在于“有一种方法可以在成功回调中管理它?”如果文件不可写,那么您会抛出文件不可写的消息OK thank you,因此通常我必须通过php端管理任何可能的警告或错误,并且在成功回调中没有其他方法来管理它。正确吗?在服务器中管理它们,然后在客户端上显示有意义的消息。。。不是来自服务器的错误。。。您不希望用户看到服务器错误