$("#clears").click(function(){ 
  $.post("clearall.php",{pagecount:pagecount},function(data){
  alert(data);
    if (pagecount==data){
    $("#numbers").html("0S");
    $("#storages").html("0GB");}
  });clearall.php是一个数组清空页面,用alert测试能针对性地清空session数组
jquery在调用的过程中在ie下能执行上述代码,但问题是有时候我要点击两次才能异步刷新?有时候点一次就行!在firefox里该段代码就不执行(其他的$.post传值可以执行),chrome里面又和ie一样可以执行搞不清楚问题到底出在哪里,有人遇到过吗?

解决方案 »

  1.   

    $(document).on("click", "#clears", function() {
       $.post("clearall.php",{pagecount:pagecount},function(data){
       alert(data);
       if (pagecount==data){
        $("#numbers").html("0S");
        $("#storages").html("0GB");
       }
    }).
      

  2.   

    $("#clears").click(function(){ 
      $.post("clearall.php",{pagecount:pagecount},function(data){
      alert(data);
        if (pagecount==parseInt(data)){
        $("#numbers").html("0S");
        $("#storages").html("0GB");}
      });
      

  3.   

    恩 恩 其实问题不在这里 我查了一下 是因为js里面的参数仍旧保留原值的问题,现在又有个新问题
    ,大致是这样的:var isclear=1;
    $("#clears").click(function(){ 
    $.post("clearall.php",{pagecount:pagecount},function(data){
    if (data==pagecount){
    isclear=0;} //清空返回的值如果得到确认,则消除选择框
    else{
    isclear=1;} //清空返回的值没有得到确认,则勾选选择框

    });
    alert(clear); //这里总是1啊,和一开始设置的全局变量有关系吗?post中能将isclear传递为0
    但是跳出post之后 isclear又变为1了,页面加载的内容必须在post之外编写,请问为什么isclear没有传值呢?
      

  4.   

    检查data和pagecount吧,
    console log或者alert一下,看看分别是什么?
      

  5.   


    异步的执行顺序就是这样的
    js的执行顺序会跳过异步,也就是说当JS运行到POST的时候他不会等待你异步处理完再执行后面的方法,而是直接执行你下面的JS语句,所以永远是1
      

  6.   

    你可以定义一个函数,然后在post内部执行该函数
      

  7.   

    6楼正解。
    1.所谓异步请求,异步就在于不会等请求结束才运行请求后的代码,
    而是请求($.post("clearall.php",{pagec...)发出后不管请求是否立即完成便会执行下面的代码(alert(isclear)),等到请求完成的时候就会立即执行回调函数(function(data){...})。2.如果你需要根据请求完成后的结果来进行相关操作,你需要把相关操作放在function(data){...}中)。比如,你可以把alert(isclear)放在其中:function(data){if{..}else{...};alert(isclear)}。
      

  8.   

    异步请求,alert在回调函数执行前就运行了吧,把alert放到回调函数里面去试一下