Как стать автором
Обновить

Использование результата jQuery.ajax вне функции вызова или можно обойтись и без cron

Время на прочтение2 мин
Количество просмотров7.7K
Не так давно начал использовать jQuery.ajax. В процессе написания одного скрипта обнаружил, что нельзя немедленно использовать ответ ajax запроса. В моём случае запрос передается серверному скрипту, который в свою очередь со стороннего домена наполняет json файл. Наполнение firebug-ом отслеживается от 12 до 20 секунд, что достаточно долго по моим меркам (нельзя заставлять людей столько ждать). Придумал следующий выход из ситуации:

Вводим глобальную переменную (дата, курс валют к рублю):
var jscurr = jQuery.parseJSON('{"data":"2012-01-22","USD":31.9344,"EUR":40.3842,"UAH":3.98135}')

Наш запрос на внешний сервер:
jQuery(document).ready(function() {
jQuery.ajax({
type: "GET",
url: "proxy.php",
dataType: "script",
cashe: false,
complete: curencesjson(),
success: curencesjsonT()
});
});//конец onLoad


По complete открываем старый json файл, даём возможность пользователю начать работать со вчерашними данными:
function curencesjson() {
jQuery.ajax({
url: 'curences.json',
dataType: "json",
cache: false,
success: function(jscur) {
jsreturn(jscur);
}
});

//обновление глобальной переменной по success
function jsreturn(jscur){
jscurr = jscur;
}
}


Через 20 секунд после старта proxy.php, пока полностью не обновится json, считываем его ещё раз, выдаём людям актуальные данные, всё это делаем по success:
function curencesjsonT() {
setTimeout(function(){
jQuery.ajax({
url: 'curences.json',
dataType: "json",
cache: false,
success: function(jscur) {
jsreturn(jscur);
}
});
}, 20000);
}

//по success естественно опять происходит обновление глобальной переменной


Таким образом удалось запускать обновление данных json без участия cron. Также результат ajax запроса доступен вне функции вызова.
В серверном скрипте само собой разумеется организована проверка по дате, обновление произойдет только один раз, с приходом в каждый новый день первого посетителя на страницу со скриптом.

Может можно было проще, но это только начало моего опыта.
Теги:
Хабы:
Всего голосов 22: ↑7 и ↓15-8
Комментарии41

Публикации

Истории

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань