指引网

当前位置: 主页 > 网页制作 > JavaScript >

XMLHttpRequest使用及简单的封装(原生js异步处理数据)

来源:网络 作者:佚名 点击: 时间:2017-08-07 22:16
[摘要] XMLHttpRequest 对象用于在后台与服务器交换数据。创建 XMLHttpRequest 对象所有现代浏览器 (IE7+、Firefox、Chrome、Safari 以及 Op...
XMLHttpRequest 对象用于在后台与服务器交换数据。

创建 XMLHttpRequest 对象

所有现代浏览器 (IE7+、Firefox、Chrome、Safari 以及 Opera) 都内建了 XMLHttpRequest 对象。

通过一行简单的 JavaScript 代码,我们就可以创建 XMLHttpRequest 对象。

创建 XMLHttpRequest 对象的语法:

xmlhttp=new XMLHttpRequest();

老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");


实例

  1. <!DOCTYPE html> 
  2. <html> 
  3.     <head> 
  4.         <meta charset="utf-8"> 
  5.         <script> 
  6. var xmlHttp; 
  7. //判断老版本浏览器使用使用 ActiveX 对象
  8. var Try = { 
  9.     these: function() { 
  10.         var returnValue; 
  11.         for (var i = 0; i < arguments.length; i++) {var lambda = arguments[i];  try {returnValue = lambda(); break;} catch (e) {}} 
  12.         return returnValue; 
  13.     } 
  14. function makeRequest(queryString, php, func, method) { 
  15.     xmlHttp = Try.these( 
  16.         function() {return new XMLHttpRequest()}, 
  17.         function() {return new ActiveXObject('Msxml2.XMLHTTP')}, 
  18.         function() {return new ActiveXObject('Microsoft.XMLHTTP')} 
  19.     ); 
  20.     method = (typeof method == 'undefined') ? 'post' : 'get'; 
  21.     if(func) xmlHttp.onreadystatechange = eval(func); 
  22.     xmlHttp.open(method, queryString, true); 
  23.     xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
  24.     xmlHttp.send(method == 'post' ? queryString : null); 
  25.  
  26. get_letter(); 
  27. function get_letter() { 
  28.     makeRequest('update.php', '?', '_get_letter'); 
  29. function _get_letter() { 
  30.     if(xmlHttp.readyState==4 && xmlHttp.status==200) { 
  31.         if(xmlHttp.responseText) { 
  32.             alert(xmlHttp.responseText); 
  33.         } 
  34.     } 
  35.  
  36. </script> 
  37. </head> 
  38. <body> 
  39. </body> 
  40. </html> 

 

------分隔线----------------------------