2015-04-22 5 views
0

Я разработал свое веб-приложение с помощью PHP, AJAX и jQuery. Все прошло гладко. Большинство запросов, поступивших в заявку, от AJAX; все вставлять, обновлять, удалять и выбиратьобработка ошибок с страницы действия AJAX

Я уже делал некоторые обработки ошибок для страниц в моем приложении, которые не доступны через AJAX.

Моя проблема; в моем приложении AJAX используется тысячи раз. Теперь потребуется много усилий, чтобы добавить обработку ошибок ко всем этим конечным точкам.

Мой вопрос: есть способ, которым я могу использовать некоторую форму общей обработки ошибок в AJAX, или я могу перенаправить с страницы действия AJAX на другую страницу с ошибкой (как это было бы также хорошо)?

Я на 99% уверен, что это невозможно, но я хочу совет экспертов.

+0

создать АЯКС вспомогательную функцию , которая будет обрабатывать все ваши Ajax вызов от помощника АЯКС, то вы можете создать обработку ошибок для вашего запроса Ajax –

+0

Посмотрите на этот Http: // StackOverflow.com/questions/26561231/javascript-global-error-handling-via-ajax-php-limit-logs-to-my-own-script –

+0

Но у меня нет ошибки в ajax, Предположим, у меня есть одна страница действия indexAction и есть ошибка в его вставном запросе, тогда как я могу узнать и уведомить пользователя о том, что что-то пошло не так –

ответ

0

кажется, что вы скопировали свой кодогенератора thousend раз, это не очень эффективно ;-)

Выполните следующие действия.

функция CommunicateWithServer (параметры) {// делать Аяксу вещь

$.ajax({ 
     type: "POST", 
     async: settings.async, 
     contentType: "application/json", 
     dataType: "json", 
     url: settings.url + settings.method, 
     data: settings.data, 
    }).done(function (d) { 
     // do a generic thing on done 
     settings.done(d); 
    }).fail(function(d) { 
     // do a generic thing on fail here 

     if (settings.fail) { 
      settings.fail(d); 
     } 

    }).always(function (d) { 
     settings.always(d); 
    }); 

}

и называют этот код везде теперь использовать непосредственно JQuery Ajax. Таким образом, вы можете реализовать новые общие функции на протяжении всего жизненного цикла программы.

Чтобы использовать этот код:

Поместить эту функцию в файле JS, который используется на каждой странице, то вместо того, чтобы делать $ .ajax(), сделайте следующее:

hereYourSettings = { 
    async:false, 
    url : "yourUrl", 
    method: "yourMethod", 
    data: {dataIsCool:true}, // <== Put your data object here 
    done: function(rawData){alert("yes!");}, 
    fail: function(rawData){alert("snap!");}, 
    always: function(rawData){alert("And I'ieII.., Will always love you!");}, 
} 

CommunicateWithServer (hereYourSettings) ;

Когда вы упорно сохраняя старый код: Использование: http://api.jquery.com/ajaxerror/

$(document).ajaxError(function(event, jqxhr, settings, thrownError) { 
    if (settings.url == "ajax/missing.html") { 
    $("div.log").text("Triggered ajaxError handler."); 
    } 
}); 
+0

вы хотите сказать Поместите этот код в document.ready и отследите другие ajax –

+0

действительно, это действительно хорошая привычка, когда вы используете «внешние» вещи, такие как jquery. –

+0

У меня есть ваша функция, но как это использовать. Я запутался. Какие параметры входят в setupd? –

0

Взгляните на ajaxSetup in jQuery docs. Используя ajaxSetup, вы можете установить значения по умолчанию для всех запросов AJAX, которые делает ваше приложение. В качестве примера:

$.ajaxSetup({ 
    type: 'POST', // All AJAX requests will be POST unless explicitly specified in the AJAX call, 
    error: function() { 
     // Your error handling for all AJAX calls. 
    } 
}); 

Теперь, если вы сделаете вызов, как это:

$.ajax({ 
    url: '/savedata/', 
    data: somedata, 
}) 

Это будет запрос POST, из-за установки значения по умолчанию, $.ajaxSetup. Тем не менее, если вы сделаете запрос, как это:

$.ajax({ 
    type: 'GET', 
    url: '/getdata/', 
    error: function(){ 
     // Different error handling code 
    } 
}); 

Это будет запросом GET, так как вы заменяете дефолты $.ajaxSetup с различным способом обработки ошибок.

Смежные вопросы