Ajax同步與非同步區別

來源:互聯網
上載者:User

 

var returnValue = null;
xmlhttp = createXmlHttp();
xmlhttp.onreadystatechange = function() {
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        if (xmlhttp.responseText == "true") {
            returnValue = "true";
        }
        else {
            returnValue = "false";
        }
    }
};
xmlhttp.open("Post",url,true); //非同步傳輸
xmlhttp.setRequestHeader("If-Modified-Since","0"); //不緩衝Ajax
xmlhttp.send(sendStr);
return returnValue;

 

 

 

 

 

 

在非同步時才可以用xmlHttpReq.onreadystatechange狀態值!下面是非同步和同步的不同調用方式:
Java代碼

xmlHttpReq.open("GET",url,true);//非同步方式
   
    xmlHttpReq.onreadystatechange = showResult; //showResult是回呼函數名
    xmlHttpReq.send(null);

function showResult(){  
    if(xmlHttpReq.readyState == 4){    
     if(xmlHttpReq.status == 200){
      ******
     }
    }
}

Java代碼
xmlHttpReq.open("GET",url,false);//同步方式  
            xmlHttpReq.send(null);  
            showResult(); //showResult雖然是回呼函數名但是具體用法不一樣~  
              
function showResult(){     
             //if(xmlHttpReq.readyState == 4){    這裡就不用了,直接dosomething吧~   
                //if(xmlHttpReq.status == 200){  
                    ******//dosomething  
                //}  
            //}  
}

 

 

xmlhttp.open("Post",url,true);
如果是同步(false),傳回值是true或false,因為執行完send後,開始執行onreadystatechange,程式會等到onreadystatechange都執行完,取得responseText後才會繼續執行下一條語句,所以returnValue一定有值。
    如果是非同步(true),傳回值一定是null,因為程式執行完send後不等xmlhttp的響應,而繼續執行下一條語句,所以returnValue還沒有來的及變化就已經返回null了。

http://te343.w3.sh.cn/blog/view.aspx?blogid=82

 

    所有如果想獲得xmlhttp傳回值必須用同步,非同步無法得到傳回值。

    同步非同步使用xmlhttp池時都要注意:取得xmlhttp時只能建立xmlhttp,不能從池中取出已用過的xmlhttp,因為被使用過的xmlhttp的readyState為4,所以同步非同步都會send但不執行onreadystatechange。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.