вызов $ .ajax (), только при обновлении - PullRequest
3 голосов
/ 06 октября 2010

Я читаю xml с помощью запроса $ .ajax ().

$.ajax({
    type: "GET",
    async: false,
    url: "../../../ErrorMessages.xml",
    dataType: "xml",
    success: function (xml) {
       $(xml).find("*[Name='" + Field + "']").each(function () {
          message = $(this).find(Rule).text();
       });
    }
});

Я хочу сделать вызов только тогда, когда ресурс ErrorMessages.xml обновлен. еще используйте кеш браузера.

Ответы [ 3 ]

3 голосов
/ 06 октября 2010

Браузер не будет знать, обновлен ли ErrorMessages.xml на сервере.Он должен выдать запрос, чтобы проверить, был ли файл изменен.

Возможно, вы захотите установить опцию ifModified на true в вашем запросе jQuery $.ajax(), так как он установлен на false по умолчанию:

$.ajax({
  type: "GET",
  ifModified: true,
  async: false,
  url: "../../../ErrorMessages.xml",
  dataType: "xml",
  success: function (xml) {
     // ..
  }
});

Цитирование из документации jQuery.ajax () :

ifModified (Boolean)

По умолчанию: false

Разрешить выполнение запроса только в том случае, если ответ изменился с момента последнего запроса.Это делается путем проверки заголовка Last-Modified.Значением по умолчанию является false, игнорируя заголовок.В jQuery 1.4 этот метод также проверяет 'etag', указанный сервером, чтобы перехватить неизмененные данные.

Пока ваш веб-сервер поддерживает заголовок Last-Modified, тогдаПервый запрос к XML будет выглядеть примерно так:

GET /ErrorMessages.xml HTTP/1.1
Host: www.example.com

HTTP/1.1 200 OK
Last-Modified: Wed, 06 Oct 2010 08:20:58 GMT
Content-Length: 1234

Однако последующие запросы к тому же ресурсу будут выглядеть так:

GET /ErrorMessages.xml HTTP/1.1
Host: www.example.com
If-Modified-Since: Wed, 06 Oct 2010 08:20:58 GMT

HTTP/1.1 304 Not Modified

Если веб-сервер обнаружит, что файлбыл изменен с даты заголовка If-Modified-Since, файл будет обслуживаться нормально.

0 голосов
/ 06 октября 2010

Смотрите здесь: http://jquery14.com/day-01/jquery-14

Поддержка Etag была включена в jQ 1.4, так что вы можете использовать ее.

0 голосов
/ 06 октября 2010

создайте глобальную переменную с именем "updateTimeStamp" и поместите отметку времени обновления в xml. затем найдите временную метку, когда вы делаете запрос ajax, и сравните ее с сохраненным ipdateTimeStamp. если он больше, то делай то, что тебе нужно, а если не делай ничего

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...