jQuery.ajax для * только * получения кода состояния, но не для получения / загрузки всего документа?
У меня есть приложение, которое использует jQuery.ajax
опросить ресурс, чтобы узнать, существует ли он. (В фоновом режиме есть служба, которая генерирует ресурс). Когда ресурс больше не имеет статуса 404, мое приложение перенаправляется на этот ресурс для просмотра. У меня вопрос... могу ли я получить статус, не загружая все содержимое документа? Если PDF, который он запрашивает, очень большой, я боюсь, что будет просто неэффективно получить статус 200 и загрузить документ с помощью jquery, а затем отбросить его и перенаправить к рассматриваемому документу.
Вот что я делаю (coffeescript):
class PDFPoller
constructor: (@url) ->
pollForPDF: ->
@timeout = setTimeout(@poll, 3000)
poll: =>
jQuery.ajax(@url, complete: @verifyPDF)
verifyPDF: (jqXHR, textStatus) =>
console.log jqXHR.status
if jqXHR.status != 404
window.location = @url
else
@pollForPDF()
@isGeneratingPDF: ->
$(".js_pdf_gen_notice").length > 0
@events: =>
if @isGeneratingPDF()
poller = new PDFPoller($(".js_pdf_gen_notice").data('url'))
poller.pollForPDF()
$(document).on 'ready', ->
PDFPoller.events()
2 ответа
Вы не можете получить только код состояния, но вы можете запросить только заголовки HTTP.
Использовать HEAD
метод. Затем вы можете проверить состояние объекта jqXHR.
jQuery.ajax("/", { type: "HEAD"}).done(
function (data, textStatus, jqXHR) {
console.log(jqXHR.status);
}
);
Я не могу найти обратный вызов для однократных заголовков, полученных из запроса, но на стороне сервера не может быть сценарий, который проверяет, существует ли файл на сервере, а затем возвращает JSON, если он существует или нет?