@suhuxa1

Как сократить аякс запись на jquery?

Приветствую!
Пишу по старинке на jquery (проекты не сильно серьезные, и функционала библиотеки вполне хватает), страшно признаться, но раньше в плане аякса не придерживался DRY. И в каждой функции у меня висела запись вида:
$.ajax({
            headers: {'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')},
            url:'/ajax/action',
            type:'post',
            data: {'id' : id},
            success: function(res) {
                if(res['status'] == 'good') {
                    //code
                }
                else {
                    //code
                }

            }
        });


Ну и вот надоело мне это, решил я один раз все это добавить в функцию, а изменяемые поля (данные, урл, метод и тд) выставить в качестве параметров. Получилось вот так:
function request (url, type, data) {
    $.ajax({
       headers: {'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')},
       url: url,
       type: type,
       data: data,
       success: function(res) {
           if(res['status'] == 'good') {
               //code
           }
           else {
               //code
           }
       }
    });
}


Вызываю, естественно так:
request('/ajax/action', 'get', {'par' : 1} );

Функция работает хорошо, но как в нее добавить еще одну функцию, которая бы вставлялась на success. Т.е. выполнялась после аякс запроса? Никак не могу придумать, надеюсь на вашу помощь.
  • Вопрос задан
  • 145 просмотров
Решения вопроса 1
function request (url, type, data, callback) {
    $.ajax({
       headers: {'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')},
       url: url,
       type: type,
       data: data,
       success: function(res) {
           if(res['status'] == 'good') {
               //code
           }
           else {
               //code
           }
          callback(res);
       }
    });
}


request('/ajax/action', 'get', {'par' : 1} , function(res){
console.log(res);
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы