Ответ AJAX кэшируется - PullRequest
       3

Ответ AJAX кэшируется

1 голос
/ 04 августа 2011

Еще раз выкладываю вопрос, похожий на предыдущий, но на этот раз моя проблема другая. Как сказано код выглядит следующим образом:

$.ajax({
            type:"POST",
            url: 'sample.php',
            data:"data="+data,
            success: function(server_response) { 
            $('.functions').ajaxComplete(function(event, request){

              if(server_response == 0)
                 {
                            var message = 'An email with instructions to reset password has been sent to your email address. Please check it.';
                 }
              else if(server_response == 1)
                {
                            var message = 'Email address was not found in our database. Please enter a valid email address';
                }
              else
                {
                            var message = 'Some problem occured while sending you an email. Please try again.';                                    
                }
   alert(message);

    });

Проблема заключается в том, что всякий раз, когда я передаю ajax-запрос, полученный от сервера ответ корректен, но если приведенный выше код выполняется несколько раз без обновления страницы, несколько диалоговых окон получаются в порядке стека. Например, если мой первый ответ равен 0, тогда получено сообщение «Письмо с инструкциями по сбросу ....». Однако, если я снова отправлю запрос без обновления страницы, и это мой, если мой ответ страницы 1, то генерируются 2 диалоговых окна с сообщением «Адрес электронной почты не найден в нашей базе данных». сверху и предыдущий ниже. Такой стек продолжает генерироваться, пока я не обновлю страницу. Я перепробовал все вещи, такие как установка кеша в ложь и все вещи, но все тщетно. пожалуйста, помогите.

Ответы [ 4 ]

2 голосов
/ 04 августа 2011

Альтернативный проход cache: false в опциях jquery ajax, например:

$.ajax({
            type:"POST",
            cache: false,
            url: 'sample.php',
            data:"data="+data,
            success: function(server_response) { 
            $('.functions').ajaxComplete(function(event, request){

              if(server_response == 0)
                 {
                            var message = 'An email with instructions to reset password has been sent to your email address. Please check it.';
                 }
              else if(server_response == 1)
                {
                            var message = 'Email address was not found in our database. Please enter a valid email address';
                }
              else
                {
                            var message = 'Some problem occured while sending you an email. Please try again.';                                    
                }
   alert(message);

    });
2 голосов
/ 04 августа 2011

2 способа для вас:

$.ajaxSetup({
  cache: false,
});

ИЛИ

$.ajax({
            type:"POST",
            cache: false,
            url: 'sample.php',
            data:"data="+data,
            success: function(server_response) { 
            $('.functions').ajaxComplete(function(event, request){

              if(server_response == 0)
                 {
                            var message = 'An email with instructions to reset password has been sent to your email address. Please check it.';
                 }
              else if(server_response == 1)
                {
                            var message = 'Email address was not found in our database. Please enter a valid email address';
                }
              else
                {
                            var message = 'Some problem occured while sending you an email. Please try again.';                                    
                }
   alert(message);

    });
1 голос
/ 02 декабря 2013

У меня возникла именно эта проблема на сайте, который просматривали на устройстве iOS. Каким-то образом катался

cache: false

установка. Поэтому я исправил это с помощью проверенного и верного хака:

var d = new Date();
$.ajax({
    url : "blah.php?"+d.getTime(),
    cache: false,
    ...

Надеюсь, это поможет любому, кто столкнется с той же проблемой.

0 голосов
/ 04 августа 2011

POST-запросы никогда не кэшируются.

Попробуйте вместо $ .post

$.post('sample.php', {"data="+data}, function(server_response) { 
      if(server_response == 0)
      {
              var message = 'An email with instructions to reset password has been sent to your email address. Please check it.';
      }
      else if(server_response == 1)
      {
             var message = 'Email address was not found in our database. Please enter a valid email address';
      }
      else
      {
             var message = 'Some problem occured while sending you an email. Please try again.';                                    
      }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...