Событие onload
происходит только в том случае, если веб-страница загружается (или перезагружается). Запросы на основе AJAX не вызывают загрузку страницы (пере), и поэтому ваш onload
слушатель не срабатывает при поступлении запроса. Вот как это должно работать.
Вместо использования onload
попытайтесь вызвать ваш обратный вызов doTimer()
, когда придет ответ AJAX. Если вам нужно, чтобы он вызывался при загрузке страницы, вызывайте его в обоих местах (onload
и при поступлении AJAX-запросов).
Ниже приведен пример, который должен дать вам представление. Обратите внимание, что он делает определенные предположения:
- Запросы должны выполняться на основе взаимодействия с пользователем (например: нажата кнопка)
- Ваша конечная точка возвращает JSON с двумя полями:
tests_finished
и markup
- Вы хотите запустить
doTimer()
тогда и только тогда, когда tests_finished
имеет значение true
HTML:
<button id="submit">Send AJAX</button>
<div id="output"></div>
Структура JSON:
{
"tests_finished": Boolean,
"markup": String
}
JavaScript
var AJAX_URL = 'PATH/TO/RESOURCE';
var $output = $('#output');
var $button = $('#submit');
$button.on('click', runAjax);
function runAjax() {
$.ajax(AJAX_URL, {
// your settings
})
.done(processResponse)
.fail(processFailures);
}
function processResponse(json) {
$result.html(json.markup);
if (json.tests_finished) {
doTimer(); // <-- called here instead of "onload"
}
}
function processFailures(exc) {
console.error(exc);
}
function doTimer() {
// ...
}