AJAX: 如何使用HttpRequest對象

使用HttpRequest對象發送請求步驟:

1. 創建 HttpRequest 對象 

[javascript] view plaincopy
  1. var xmlhttp = new XMLHttpRequest();  

2. 告訴 XMLHttpRequest 對象,當狀態發生改變時, 會調用哪個函數。

爲此,要把 onreadystatechange 屬性設置爲指向 JavaScript 函數的指針

[javascript] view plaincopy
  1. xmlhttp.onreadystatechange = renewMsg;  

3. 指定請求屬性。XMLHttpRequest  對象的 open() 方法指定將發出的請求。

[javascript] view plaincopy
  1. xmlhttp.open("GET", url, true);  

4. 將請求發送給服務器。send() 方法把請求發送到指定的目標資源。

例子:

[javascript] view plaincopy
  1. //發送給ajax接收器  
  2. function sendMsgToAjax()  
  3. {  
  4.     //  
  5.     var question = document.getElementById('inputArea').value;  
  6.     //alert(msg);  
  7.     question = trim(question);  
  8.     if(question == "請提問" || question == "請在此輸入您的問題" || question == "您的建議答案是"return;  
  9.     if(question != "")  
  10.     {  
  11.         var url = "recvMsg.php?question=" + question + "&TempUserID="+TempUserID + "&preQuestion="+preQuestion+ "&IsTeachMode="+ IsTeachMode + "&IsAsk="+ IsAsk;   
  12.           
  13.         preQuestion = question;  
  14.         document.getElementById('inputArea').value = "";  
  15.         //alert(url);  
  16.         xhr.open("GET", url, true);  
  17.         xhr.setRequestHeader("If-Modified-Since","0");  
  18.         xhr.onreadystatechange = renewMsg; //只要響應來,就調用這個函數  
  19.         xhr.send();  
  20.     }  
  21. }  
  22.   
  23. //更新本頁內容  
  24. function renewMsg()  
  25. {  
  26.     if(xhr.readyState == 4)  
  27.     { //XMLHttpRequest        
  28.         var xmlDoc = xhr.responseText;  
  29.         //alert(xmlDoc);  
  30.         var s = xmlDoc.split("|");  
  31.         xmlDoc = s[0];  
  32.         //alert(s[0]);  
  33.         //alert(s[1]);  
  34.         //接收信息內容去掉html標籤  
  35.         xmlDoc = xmlDoc.replace(/>/g, '>');  
  36.         xmlDoc = xmlDoc.replace(/</g, '<');  
  37.         xmlDoc = xmlDoc.replace(/"g/, '\"');   
  38.   
  39.         var financeUrl = s[1];/////////金融圖片  
  40.         document.getElementById('financeImg').src = financeUrl;  
  41.   
  42.         var weatherURL = s[2];  
  43.         document.getElementById('weather').src = weatherURL;  
  44.           
  45.         var searchURL = s[3];  
  46.         document.getElementById('contentFrm').src = searchURL;  
  47.   
  48.         if(financeUrl)//判斷是否是金融問句,是跳轉到股票section  
  49.         {  
  50.             doClick('a_section2');  
  51.         //document.getElementById("a_section2").click(); //變態的ie8不支持  
  52.         }  
  53.         else if(weatherURL)  
  54.         {  
  55.             doClick('a_section3');  
  56.         }  
  57.         else if(searchURL)  
  58.         {  
  59.             doClick('a_section4');  
  60.         }  
  61.         else  //不是以上問句,跳轉到首頁section  
  62.         {  
  63.             doClick('a_section0');  
  64.             //document.getElementById("a_section0").click();//變態的ie8不支持  
  65.         }  
  66.           
  67.         //alert(financeUrl);  
  68.         //location.reload();  
  69.         //alert(xmlDoc);  
  70.         var oldMsg = document.getElementById('outputArea').innerHTML;  
  71.         //alert(old);  
  72.         document.getElementById('outputArea').innerHTML = oldMsg + xmlDoc ;           
  73.     }  
  74.     if(xhr.readyState == 4 && IsTeachMode)  
  75.     {  
  76.         IsAsk++;  
  77.         if(IsAsk % 2 == 0)  
  78.         {  
  79.             document.getElementById('inputArea').value = '請提問';  
  80.         }  
  81.         else   
  82.         {  
  83.             document.getElementById('inputArea').value = '您的建議答案是';  
  84.         }  
  85.     }  
  86.     //滾動條置底  
  87.     var div = document.getElementById('outputArea');  
  88.     div.scrollTop = div.scrollHeight;   
  89. }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章