2011-08-04 118 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, 
    ... 

我希望这可以帮助其他人面临着同样的问题。