function addheadsub1() {
     var val1=document.getElementById("test1").value;
     $.post("app.php", {temp1:val1}, function(data){
     if(data=="x"){
 document.getElementById("test2").value="xbx";
    }
  });
   if(document.getElementById("test2").value=="xbx"){
        document.getElementById("test3").value=="xxx"
      return;
   }
......
}现在是当 app.php返回的 data="x"时,test3没能得到"xxx".
而test2的值确已变成"xbx".求原因?

解决方案 »

  1.   

    异步处理的顺序问题。
    if(document.getElementById("test2").value=="xbx"){
        document.getElementById("test3").value=="xxx"
        return;
    }在这个语句执行的时候,异步并未结束,所以如果想得到XXX的话需要把代码改成:function addheadsub1() {
         var val1=document.getElementById("test1").value;
         $.post("app.php", {temp1:val1}, function(data){
           if(data=="x"){
             document.getElementById("test2").value="xbx";
           }
           if(document.getElementById("test2").value=="xbx"){
             document.getElementById("test3").value=="xxx";
             return;
           }
         }
      });
    ......
    }
      

  2.   

    再简化就是:
    function addheadsub1() {
         var val1=document.getElementById("test1").value;
         $.post("app.php", {temp1:val1}, function(data){
           if(data=="x"){
             document.getElementById("test2").value="xbx";
             document.getElementById("test3").value=="xxx";
           }
         }
      });
    ......
    }
      

  3.   

    多了个右括号,罪过罪过。
    function addheadsub1() {
         var val1=document.getElementById("test1").value;
         $.post("app.php", {temp1:val1}, function(data){
           if(data=="x"){
             document.getElementById("test2").value="xbx";
             document.getElementById("test3").value=="xxx";
           }
          });
        }