Javascript XHTTP Ответ Ajax не всегда фактический [дубликат]

Вместо словаря вы также можете использовать namedtuple из модуля коллекций, что облегчает доступ.

например:

#using dictionary
variables = {}
variables["first"] = 34
variables["second"] = 45
print variables["first"], variables["second"]

#using namedtuple
Variables = namedtuple('Variables', ['first', 'second'])
vars = Variables(34, 45)
print vars.first, vars.second
9
задан Babiker 4 June 2009 в 07:19
поделиться

5 ответов

Добавьте строку запроса к URL-адресу, который вы отправляете.

. если запрос Ajax отправлен на « http://www.xyz.com/a », затем добавьте случайную строку в конец: « http://www.xyz.com/ стоит? д = 39058459ieutm39 "

11
ответ дан Itay Maman 22 August 2018 в 19:53
поделиться
  • 1
    ... и вы можете создать случайную строку в javascript, например, следующим образом: Math.floor (Math.random () * 1000000) – Manne 4 June 2009 в 07:21
  • 2
    Это решение имеет серьезный недостаток: он заполняет кеш, если вы извлекаете много файлов. В моем случае я хочу сохранить кеш для автономного использования, поэтому я не хочу заполнять его старыми версиями запроса. – Luis A. Florit 14 April 2014 в 01:11

с помощью jQuery вы можете установить глобальный параметр ajax: {cache: false}. См. Его в jquery ajax docs

4
ответ дан glaz666 22 August 2018 в 19:53
поделиться

Есть два метода для этого, о которых я знаю.

  • Добавьте некоторую строку запроса в URL-адрес запроса AJAX, чтобы он всегда был уникальным. Миллисекундная временная метка (возможно, в сочетании со случайным значением) хороша для этого
  • Установите заголовки управления кешем HTTP для ответа AJAX, чтобы браузер не кэшировал его
4
ответ дан John Topley 22 August 2018 в 19:53
поделиться

Случайный URL-адрес работает, но это своего рода хак. У HTTP есть встроенные решения, которые должны работать. Попробуйте использовать указанное здесь решение . В принципе, установите заголовки:

"Pragma":            "no-cache",
"Cache-Control":     "no-store, no-cache, must-revalidate, post-check=0, pre-check=0",
"Expires":           0,
"Last-Modified":     new Date(0), // January 1, 1970
"If-Modified-Since": new Date(0)
13
ответ дан Matthew Flaschen 22 August 2018 в 19:53
поделиться
  • 1
    Отлично спасибо. (Хотя кажется странным, что заголовки установлены на клиенте, а не в ответе с сервера!) – David Underhill 11 May 2010 в 04:04
  • 2
    Я получаю сообщение об ошибке, пытающееся реализовать ваше решение: request header field pragma is not allowed by "access-control-allow-headers". Любая идея, как этого избежать? Посмотрите: stackoverflow.com/questions/23048184/… – Luis A. Florit 14 April 2014 в 01:15
  • 3
    Вызов, который я делал, потерпит неудачу при передаче случайного числа через строку запроса. Я не создавал сервис, но казалось, что он пытается интерпретировать каждый параметр. Это было отличное решение, спасибо! – hack3rfx 10 February 2017 в 18:18
  • 4
    У нас возникла проблема с new Date(0), где запрос не удался, потому что дата указана в недопустимом формате для русского пользователя. Поэтому лучше напишите какую-нибудь дату себе как: "Wed, 21 Oct 1970 07:28:00 GMT" вместо использования new Date(0) – chitzui 26 February 2018 в 15:49

Я использовал метод jQuery {cache: false}, и он работал как шарм.

Полный пример кода выглядит так:

$.ajaxSetup({cache: false});
8
ответ дан Mitch Labrador 22 August 2018 в 19:53
поделиться
  • 1
    отлично! случайная строка запроса не работает. – Brent81 16 June 2012 в 06:11
  • 2
    И для меня работала только случайная строка! – user984003 19 July 2013 в 08:10
  • 3
    ajaxSetup работает только для вызовов ajax. Для других вызовов JS вам может потребоваться добавить случайный хакер строки querystring. – Rajeev Nair 17 January 2014 в 20:39
Другие вопросы по тегам:

Похожие вопросы: