如何避免重复定义单个Ajax错误函数

时间:2015-10-24 06:11:20

标签: php ajax laravel error-handling blade

我在项目中使用laravel。在我的项目中存在许多ajax请求。对于错误处理我使用此代码分区。

error: function(jqXHR, exception) {
    if (jqXHR.status === 0) {
        alert('Bağlantı sağlanamadı.\n Lütfen internet bağlantınızı kontrol ediniz.');
    } else if (jqXHR.status === 404) {
        alert('Sayfa bulunamadı. [404]');
    } else if (jqXHR.status === 401) {
        window.location.replace('{{ route('login') }}');
    } else if (jqXHR.status === 500) {
        alert('Sunucu Hatası [500].');
    } else if (exception === 'parsererror') {
        alert('Requested JSON parse failed.'+ jqXHR.responseText);
    } else if (exception === 'timeout') {
        alert('Time out error.');
    } else if (exception === 'abort') {
        alert('Ajax istemi durduruldu.');
    } else {
        alert('Beklenmeyen Hata.\n' + jqXHR.responseText);
    }
},

我为每一个请求重复自己。

我想写成error: '{{ ajaxError() }}'

作为辅助方法。但我无法处理它。无论如何都要在刀片中做到这一点。我不想重复自己。

1 个答案:

答案 0 :(得分:0)

可能从刀片服务器输出回调名称不是最佳解决方案

如果您使用JQuery,则可以将全局错误处理程序附加到每个页面:(将其放在页面脚本的开头)

    $(document).ajaxError(function (event, jqXHR, settings, exception) 
    {
         if (jqXHR.status === 0) {
            alert('Bağlantı sağlanamadı.\n Lütfen internet bağlantınızı kontrolediniz.');
        } else if (jqXHR.status === 404) {
            alert('Sayfa bulunamadı. [404]');
        } else if (jqXHR.status === 401) {
            window.location.replace('{{ route('login') }}');
        } else if (jqXHR.status === 500) {
        alert('Sunucu Hatası [500].');
        } else if (exception === 'parsererror') {
        alert('Requested JSON parse failed.'+ jqXHR.responseText);
        } else if (exception === 'timeout') {
        alert('Time out error.');
        } else if (exception === 'abort') {
        alert('Ajax istemi durduruldu.');
        } else {
        alert('Beklenmeyen Hata.\n' + jqXHR.responseText);
        }
    } );

这样您甚至不必为每个请求指定错误回调,但每次ajax调用都会返回错误,将执行全局回调

如果你不想使用jquery,你可以定义一个回调函数:

function errorCallback (event, jqXHR, settings, exception) 
{
     if (jqXHR.status === 0) {
        alert('Bağlantı sağlanamadı.\n Lütfen internet bağlantınızı kontrolediniz.');
    } else if (jqXHR.status === 404) {
        alert('Sayfa bulunamadı. [404]');
    } else if (jqXHR.status === 401) {
        window.location.replace('{{ route('login') }}');
    } else if (jqXHR.status === 500) {
    alert('Sunucu Hatası [500].');
    } else if (exception === 'parsererror') {
    alert('Requested JSON parse failed.'+ jqXHR.responseText);
    } else if (exception === 'timeout') {
    alert('Time out error.');
    } else if (exception === 'abort') {
    alert('Ajax istemi durduruldu.');
    } else {
    alert('Beklenmeyen Hata.\n' + jqXHR.responseText);
    }
}

并将其附加到每个ajax请求:

error: errorCallback