JQuery отключение ajax-кэша не работает? - PullRequest
6 голосов
/ 05 декабря 2010

Я разрабатываю расширение Firefox, которое использует ajax-запрос для получения информации.Это код:

$.ajax({
        url: "http://127.0.0.1/foo/bar/Service?wsdl" + new Date().getTime(),
        beforeSend: function(request) { request.setRequestHeader("SOAPAction", "Group"); },         
        async: false,
        cache: false,
        type: "POST",   
        dataType: "xml",
        data: req,
        contentType: "text/xml; charset=\"utf-8\"",
        success: function (data, textStatus, xmlHttpRequest) {
        out = $(xmlHttpRequest.responseXML);
        }
    }); 

Я все еще получаю тот же результат, когда данные, отправляемые на сервер, изменяются.Я попытался избежать этого, добавив «new Date (). GetTime ()» к URL и «cache: false».Это не похоже на работу.После перезапуска браузера я получаю правильные результаты.

У кого-нибудь есть идеи в чем проблема?Есть ли какая-то обработка сеанса, поэтому сервер по-прежнему возвращает старый ответ?

Редактировать: Я провел много тестов и отладок, и я думаю, что нашел проблему: есть куки, сохраненные с каждымajax-запрос, который содержит идентификатор сеанса, поэтому каждый раз, когда я делаю запрос снова, сервер отправляет данные сеанса с идентификатором сеанса в cookie.Действительно плохое поведение, я не знал, что куки могут быть созданы с помощью ajax-запроса.Поэтому все, что мне нужно сделать, чтобы решить эту проблему, - это функция, которая удаляет этот файл cookie каждый раз, когда меняются мои параметры.Еще раз спасибо за вашу помощь.

Ответы [ 2 ]

8 голосов
/ 05 декабря 2010

Можете ли вы попробовать это

$(document).ready(function() {
  $.ajaxSetup({ cache: false });
});

Попробуйте использовать Math.random (), чтобы быть на более безопасной стороне

Date (). GetTime () вместе с Math.random ()

http://127.0.0.1/foo/bar/Service?wsdl" + new Date().getTime() + Math.random()
1 голос
/ 05 декабря 2010

Попробуйте амперсанд перед отметкой времени:

http://127.0.0.1/foo/bar/Service?wsdl&" + new Date().getTime()

Я полагаю, что wsdl-параметр имеет смысл там внутри URL, без амперсанда, и вы уничтожите параметр.

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