ajax方法调用第一次之后无论调用多…

来源:互联网 发布:创建数据表的sql语句 编辑:程序博客网 时间:2024/06/05 11:16

最近在学校工作室团队开发学习平台的问答系统的时候发现,一个ajax方法(具体如下)总是只调用一次,而原来程序通过for循环多次调用该方法且代码没有出错,无论如何刷新都只会调用一次成功,甚至有时会全部失败,这个问题困扰了很久。

functionhasGoodOrBad(flag,goodNum,badNum){ //加载时判断是否已经点过赞或点过踩
   $.ajax({
    type:'post',
    url:'hasGoodOrBad.action', 
    data:{QuestionAnswerID:flag},
    dataType:'json',
    success:function(data){
       
       if(data.getAppraise==1)
       {
         $("#good_"+flag).html("已赞"+goodNum);
         $("#bad_"+flag).html("踩"+badNum);
         alert(flag+":"+data.getAppraise);
       }
       else{
         if(data.getAppraise==(-1)){
          $("#good_"+flag).html("赞"+goodNum);
          $("#bad_"+flag).html("已踩"+badNum);
          alert(flag+":"+data.getAppraise);
         }
         else{
          $("#good_"+flag).html("赞"+goodNum);
          $("#bad_"+flag).html("踩"+badNum);
          alert(flag+":"+data.getAppraise);
         }
       }
       
     }
    });
  }

内部方法就不贴出来了。ajax方法调用第一次之后无论调用多少次都没有反应的解决方法

后来查资料,了解到“IE内核的浏览器会自动缓存异步通信处理结果,第一次ajax请求已经被高速缓存,若第二次点击(请求),IE浏览器会认为这是同一个请求,由于第一次请求已经得到了响应,因此不会再响应第二次、第三次...的请求。”

解决方法是保证每次异步请求的url地址都不相同,即唯一标识每一次请求。每次请求给url传送一个随机数参数。


  functionhasGoodOrBad(flag,goodNum,badNum){ //加载时判断是否已经点过赞或点过踩
    varrandomCode =Math.random();
   alert(randomCode);
   $.ajax({
    type:'post',
    url:'hasGoodOrBad.action?randomCode='+randomCode, 
    data:{QuestionAnswerID:flag},
    dataType:'json',
    success:function(data){
       
       if(data.getAppraise==1)
       {
         $("#good_"+flag).html("已赞"+goodNum);
         $("#bad_"+flag).html("踩"+badNum);
         alert(flag+":"+data.getAppraise);
       }
       else{
         if(data.getAppraise==(-1)){
          $("#good_"+flag).html("赞"+goodNum);
          $("#bad_"+flag).html("已踩"+badNum);
          alert(flag+":"+data.getAppraise);
         }
         else{
          $("#good_"+flag).html("赞"+goodNum);
          $("#bad_"+flag).html("踩"+badNum);
          alert(flag+":"+data.getAppraise);
         }
       }
       
     }
    });
  }

发现确实有效,但是发现在火狐浏览器中似乎不太有效,在火狐中虽然每次方法都会确实重新调用,当时在我的程序中只有最后一次会被写在我的页面上,很奇怪,只能慢慢解决再完善。

0 0
原创粉丝点击