XMLHTTP非同步擷取傳回值的代碼逾時測試(AJAX)

來源:互聯網
上載者:User
ajax|xml|非同步

用戶端檔案,請修改檔案名稱為:test_2.htm

<html>  
<body>  
xmlhttp非同步例子:  
URL:  <input  name=a  type=textbox value="test_s.asp"  style="width:600px"  >  
<input  onclick=  "getXML()"  type=  "button"  value=  "得到原始碼">  
<input  name=geti  type=textbox value="10000">  
<input  onclick=  "if(xh  &&  xh.responseText)  {alert(xh.responseText);oDiv.innerHTML=xh.responseText}  "  type=  "button"  value=  "顯示原始碼  "  >  
<div  id=m style="display:none"></div>


<script language=javascript>  
var oDiv              
var xh                          
function  getXML()  
{  
    oDiv = document.all.m;
    oDiv.innerHTML = "正在裝載欄目資料,請稍侯.......  ";
    oDiv.style.display = "";  
    xh = new ActiveXObject("Microsoft.XMLHTTP")
    xh.onreadystatechange = getReady;  
    xh.open("POST",a.value + "?geti=" + geti.value,true);
    //alert("geti=" + geti.value);
    xh.send();  
}  
 
function  getReady()  
{
    if(xh.readyState==4)  
       {  
        if(xh.status==200)  
        {  
            oDiv.innerHTML = xh.responseText;
            oDiv.innerHTML = oDiv.innerHTML + "load over"
        }  
        else  
        {  
            oDiv.innerHTML  =    "抱歉,裝載資料失敗。原因:  "  +  xh.statusText  
            // 我測試了,一旦已耗用時間過長會出現:抱歉,裝載資料失敗。原因: Internal Server Error
            // 但是這個時間是多少呢?在哪裡設定呢?
        }
    } 
    else
    {
        oDiv.innerHTML = "已經有資料了,不過readyState檢測未通過<br>";
        switch (xh.readyState){
            case 0:
                oDiv.innerHTML = oDiv.innerHTML + "0 (未初始化) 對象已建立,但是尚未初始化(尚未調用open方法)";
                break;
            case 1:
                oDiv.innerHTML = oDiv.innerHTML + "1 (初始化) 對象已建立,尚未調用send方法"
                break;
            case 2:
                oDiv.innerHTML = oDiv.innerHTML + "2 (發送資料) send方法已調用,但是當前的狀態及http頭未知"
                break;
            case 3:
                oDiv.innerHTML = oDiv.innerHTML + "3 (資料傳送中) 已接收部分資料,因為響應及http頭不全,這時通過responseBody和responseText擷取部分資料會出現錯誤, "
                break;
            case 4:
                oDiv.innerHTML = oDiv.innerHTML + "4 (完成) 資料接收完畢,此時可以通過通過responseBody和responseText擷取完整的回應資料"
                break;
            default: 
                oDiv.innerHTML = oDiv.innerHTML + xh.readyState + "未知狀態"
                break;
        }
        oDiv.innerHTML =  oDiv.innerHTML + "。請等待"
    }
}
</script>

</body></html>

伺服器端檔案,請修改檔案名稱為:test_s.asp

<%
dim i
dim r
dim t
dim lngGetI

lngGetI=request.querystring("geti")

on error resume next
lngGetI=clng(lngGetI)
if err<>0 then
    response.write "GetError:  not isnumber()"
    response.end()
end if

if lngGetI<0 or lngGetI>500000 then
    lngGetI=10000
end if

response.write "Run Repeat At:" & lngGetI & "<br>" 


t=timer
for i=1 to lngGetI
    r = r & i
    if i mod 20 = 0 then
        r= r & "a<br>"
    end if
next

response.write "run timer:" & cdbl(timer()-t)  & "<br>"
response.write r


%>



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.