项目积累--ajax.js封装

本文介绍了一种使用JavaScript实现的AJAX封装方法,通过GET请求发送数据并接收响应。该方法兼容不同浏览器环境,包括IE及现代浏览器,并提供了错误处理机制。
js 代码
 
  1. //////////////////ajax封装  
  2.   
  3. var req;   
  4. var xmlDoc,xmlHttpRequest;  
  5. var ajaxExcetpion;  
  6. ///////////调用的URL(以GET方式组装的参数),回调方法callback  
  7. ///////////返回:成功返回true,失败返回false;  
  8. function ajaxCallByGet(url,callback,win_self)  
  9. {  
  10. if (window.XMLHttpRequest) {  
  11.                 win_self.req = new XMLHttpRequest();  
  12.                     if (req.overrideMimeType){  
  13.                     req.overrideMimeType('text/xml');  
  14.                         }     
  15.          } else if (window.ActiveXObject) {  
  16.             if (xmlHttpRequest) {  
  17.               win_self.req= new ActiveXObject(xmlHttpRequest);  
  18.             }else {  
  19.                    var versions = ["Msxml2.XMLHTTP.7.0""Msxml2.XMLHTTP.6.0""Msxml2.XMLHTTP.5.0""Msxml2.XMLHTTP.4.0""MSXML2.XMLHTTP.3.0""MSXML2.XMLHTTP","MSXML.XMLHTTP",  
  20.                         "Microsoft.XMLHTTP"];  
  21.                for (var i = 0; i < versions.length ; i++) {  
  22.                  try {  
  23.                      win_self.req = new ActiveXObject(versions[i]);  
  24.                      if (win_self.req) {  
  25.                         xmlHttpRequest = versions[i];  
  26.                         ajaxExcetpion = null;  
  27.                         break;  
  28.                     }  
  29.                 }  
  30.                 catch (objException) {  
  31.                     ajaxExcetpion = objException;  
  32.                 } ;  
  33.             }  
  34.             ;  
  35.         }  
  36.     }  
  37.       
  38.     if(ajaxExcetpion){  
  39.       return false;       
  40.     }  
  41.     if(req){   
  42.                       
  43.          req.open("GET", url, true);   
  44.          req.onreadystatechange = callback;   
  45.          req.send(null);   
  46.     }  
  47.      return true;  
  48. }  
  49.   
  50.   
  51. /* 
  52.  * Returns an new XMLHttpRequest object, or false if the browser 
  53.  * doesn't support it 
  54.  */  
  55. function newXMLHttpRequest() {  
  56.   
  57.     var xmlreq = false;  
  58.       
  59.     if (window.XMLHttpRequest) {  
  60.         xmlreq = new XMLHttpRequest();  
  61.         if (xmlreq.overrideMimeType){  
  62.             xmlreq.overrideMimeType('text/xml');  
  63.         }     
  64.     } else if (window.ActiveXObject) {  
  65.         if (xmlHttpRequest) {  
  66.             xmlreq= new ActiveXObject(xmlHttpRequest);  
  67.         }else {  
  68.             var versions = ["MSXML.XMLHTTP",  
  69.                         "Microsoft.XMLHTTP","Msxml2.XMLHTTP.7.0""Msxml2.XMLHTTP.6.0""Msxml2.XMLHTTP.5.0""Msxml2.XMLHTTP.4.0""MSXML2.XMLHTTP.3.0""MSXML2.XMLHTTP"];  
  70.             for (var i = 0; i < versions.length ; i++) {  
  71.                 try {  
  72.                     xmlreq = new ActiveXObject(versions[i]);  
  73.                     if (xmlreq) {  
  74.                         xmlHttpRequest = versions[i];  
  75.                         ajaxExcetpion = null;  
  76.                         break;  
  77.                     }  
  78.                 }  
  79.                 catch (objException) {  
  80.                     ajaxExcetpion = objException;  
  81.                 }   
  82.                   
  83.             }  
  84.               
  85.         }  
  86.     }  
  87.   
  88. return xmlreq;  
  89. }  
  90.   
  91.   
  92.     /* 
  93.     * Returns a function that waits for the specified XMLHttpRequest 
  94.     * to complete, then passes it XML response to the given handler function. 
  95.   * req - The XMLHttpRequest whose state is changing 
  96.   * responseXmlHandler - Function to pass the XML response to 
  97.   */  
  98.  function getReadyStateHandler(req, responseXmlHandler) {  
  99.   
  100.    // Return an anonymous function that listens to the XMLHttpRequest instance  
  101.    return function () {  
  102.   
  103.      // If the request's status is "complete"  
  104.      if (req.readyState == 4) {  
  105.          
  106.        // Check that we received a successful response from the server  
  107.        if (req.status == 200) {  
  108.   
  109.          // Pass the XML payload of the response to the handler function.  
  110.          responseXmlHandler(req);  
  111.   
  112.        } else {  
  113.   
  114.          // An HTTP problem has occurred  
  115.          alert("HTTP error "+req.status+": "+req.statusText);  
  116.        }  
  117.      }  
  118.    }  
  119.  }  
  120.   
  121.   
  122. function test()  
  123. {   
  124.   alert("test");  
  125. }  
C语言-光伏MPPT算法:电导增量法扰动观察法+自动全局搜索Plecs最大功率跟踪算法仿真内容概要:本文档主要介绍了一种基于C语言实现的光伏最大功率点跟踪(MPPT)算法,结合电导增量法与扰动观察法,并引入自动全局搜索策略,利用Plecs仿真工具对算法进行建模与仿真验证。文档重点阐述了两种经典MPPT算法的原理、优缺点及其在不同光照和温度条件下的动态响应特性,同时提出一种改进的复合控制策略以提升系统在复杂环境下的跟踪精度与稳定性。通过仿真结果对比分析,验证了所提方法在快速性和准确性方面的优势,适用于光伏发电系统的高效能量转换控制。; 适合人群:具备一定C语言编程基础和电力电子知识背景,从事光伏系统开发、嵌入式控制或新能源技术研发的工程师及高校研究人员;工作年限1-3年的初级至中级研发人员尤为适合。; 使用场景及目标:①掌握电导增量法与扰动观察法在实际光伏系统中的实现机制与切换逻辑;②学习如何在Plecs中搭建MPPT控制系统仿真模型;③实现自动全局搜索以避免传统算法陷入局部峰值问题,提升复杂工况下的最大功率追踪效率;④为光伏逆变器或太阳能充电控制器的算法开发提供技术参考与实现范例。; 阅读建议:建议读者结合文中提供的C语言算法逻辑与Plecs仿真模型同步学习,重点关注算法判断条件、步长调节策略及仿真参数设置。在理解基本原理的基础上,可通过修改光照强度、温度变化曲线等外部扰动因素,进一步测试算法鲁棒性,并尝试将其移植到实际嵌入式平台进行实验验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值