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. }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章