Доброго времени суток!
Выявил странную ошибку, на странице производится 3 запроса к серверу методом $.ajax(). Сервер отдает все 3 ответа, но при этом колбек срабатывает только одного запроса, остальные генерят ошибки.
$(document).ready(function(){
$.when(
getRequest('GetProjectTypes', '', function(data){
alert('1');
}),
getRequest('GetTasksTable', 'project_type=2', function(data){
alert('2');
}),
getRequest('GetGroupUsers', 'group_id=1', function(data){
alert('3');
})
).then(function(){alert("Done");});
});
getRequest - функция, которая собственно и реализует запросы к серверу:
function getJSONP(url, callback, success){
$.ajax({
url: url,
dataType: 'jsonp',
jsonpCallback: callback,
success: success,
error: function(r, m, e){
alert(e);
}
});
}
function getRequest(method, vars, success){
getJSONP(
'http://127.0.0.1:8000/test_api/' + method + '/?' + vars,
'callback_function',
function(data){
if(data['status'] == 'ok'){
success(data);
}else{
alert(data['data']);
}
}
);
}
При загрузке страницы появляется алерт "Done", а затем алерт "2". При этом первый и третий запросы выдают ошибки "TypeError: callback_function is not a function" и "Error: callback_function was not called". Сервер на все запросы возвращает status: 200 и данные в виде "callback_function(<JSON>);". JSON валидный, проверял на jsonlint.
Почему возникают ошибки? Помогите исправить.
PS: Добавлю, что первый и третий запрос выполняются за 30-60 мс, а второй - за 2,5 с. Возможно это влияет на результат? Но если я правильно понимаю, то смысл метода when заключается в том, чтобы дождаться выполнения всех асинхронных запросов?
Заранее благодарен за помощь!