2011-08-04 113 views
1

我再次發佈與上一個類似的問題,但這次我的問題不同。作爲所述代碼如下:正在緩存AJAX響應

$.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個對話框,並顯示消息「在我們的數據庫中找不到電子郵件地址」。在上面和下面的前一個。這樣的堆棧繼續生成,直到我刷新頁面。我嘗試了所有的東西,例如將緩存設置爲false和所有東西,但都是徒勞的。請幫忙。

+0

對不起,但沒有發佈在這裏似乎解決了我的問題 – Ken

+0

你好,我的問題是我想擺脫生成的堆棧。並只顯示當前消息。 – Ken

回答

0

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.';          
     } 
}); 
+0

我也試過,但問題仍然存在 – Ken

2

在jQuery的AJAX選項替代通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); 

    }); 
2

2種方式爲您提供:

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

OR

$.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

我在通過iOS設備查看網站時遇到了這個問題。它在某種程度上壓平了

cache: false 

設置。所以,我有嘗試和真正的黑客固定它:

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

我希望這可以幫助其他人面臨着同樣的問題。