Мой проект требует опроса определенного URL-адреса для ответа JSON, используя AJAX. Первый запрос AJAX, который я отправляю, предупреждает сервер о том, что я хочу получить некоторое содержимое JSON, и он начинает создавать и кэшировать ответ, отправляя мне обратно {"status": "pending"} для каждого последующего запроса AJAX до JSON готов. В этот момент ответ меняется на JSON, содержащий содержимое, которое я могу проанализировать и отобразить в документе, что я хочу сделать, как только URL-адрес вернет что-либо, кроме {"status": "pending"} .
Я установил функцию опроса, которая работает, как и ожидалось, для повторного запроса JSON из URL. Однако проблема заключается в том, что он продолжает получать ответ {"status": "pending"} , даже когда я перехожу непосредственно к URL и вижу, что полный ответ JSON готов и обслуживается. По какой-то причине моя функция опроса по-прежнему получает {"status": "pending"} .
Когда я обновляю страницу, содержащую код опроса, он обычно работает с первым запросом, то есть получает полный ответ JSON. Это наводит меня на мысль, что это какая-то проблема с кэшированием, но я не уверен, где и почему. Разве каждый AJAX-запрос не должен получать новый ответ, или это можно настроить в моем вызове $. Ajax () ?
Вот код, который я сейчас использую:
function ajax_poll() {
$.ajax({
url: JSON_URL, // JSON_URL is a string containing the URL to poll
dataType: 'json',
error: function(xhr_data) {
display_error();
},
success: function(xhr_data) {
if (xhr_data.status == 'pending') {
poll++; // increment poll counter // poll is a global variable to track the number of requests made
if (poll < POLLS) { // POLLS is a global variable to set the maximum number of requests
setTimeout(function() { ajax_poll(); }, INTERVAL); // wait INTERVAL before another AJAX request
} else {
display_error();
}
} else {
success(xhr_data);
}
},
contentType: 'application/json'
});
}
success () - это функция, которая отображает содержимое JSON (т.е. то, что я жду, чтобы стать доступным при опросе) на странице.
Стоит отметить, что во время локального тестирования кода, опроса локального тестового файла .json я могу изменить содержимое файла с {"status": "pending"} на ответ, содержащий содержимое как я ищу, сохраняйте файл между экземплярами опроса, и при следующем опросе мой код видит новый контент и работает как положено. Это просто не работает в промежуточной среде.