Ajax异步调用框架

ajax|异步

/* 
 作者:welfred 
 时间:05年8月14日  
 作用:Ajax异步调用框架 
*/ 
var req; 

// retrieve XML document (reusable generic function); 
// parameter is URL string (relative or complete) to 
// an .xml file whose Content-Type is a valid XML 
// type, such as text/xml; XML source must be from 
// same domain as HTML file 
function ajax(url){ 
  
 req = false; 
  
    // branch for native XMLHttpRequest object 
    if(window.XMLHttpRequest) { 
     try { 
   req = new XMLHttpRequest(); 
        } catch(e) { 
   req = false; 
        } 
    // branch for IE/Windows ActiveX version 
    } else if(window.ActiveXObject) { 
        try { 
         req = new ActiveXObject("Msxml2.XMLHTTP"); 
       } catch(e) { 
         try { 
            req = new ActiveXObject("Microsoft.XMLHTTP"); 
         } catch(e) { 
            req = false; 
         } 
  } 
    } 
 if(req) { 
  req.onreadystatechange = processReqChange;  //Once the state changed,the function "processReqChange" will be excuted. 
  req.open("GET", url, true); 
  req.send(); 
 } 

/*Wait for the response*/ 
function processReqChange()  

    // only if req shows "complete" 
    if (req.readyState == 4) { 
        // only if "OK" 
        if (req.status == 200) { 
   //Here is  your bussiness code 
   procBusiness(); 
        } else { 
            alert("获得数据遇到问题!\n请保证您的网络连接畅通;否则,请及时与管理员联系,谢谢!:\n" + req.statusText); 
        } 
    } 

/* 
  Read the XML file and retrive the data */ 
function procBusiness(){ 
  var xmlResult = req.responseXML; 
  var root = xmlResult.documentElement; 

 //TO DO 

时间: 2024-11-02 11:13:50

Ajax异步调用框架的相关文章

写个JavaScript异步调用框架(Part 1

问题 在Ajax应用中,调用XMLHttpRequest是很常见的情况.特别是以客户端为中心的Ajax应用,各种需要从服务器端获取数据的操作都通过XHR异步调用完成.然而在单线程的JavaScript编程中,XHR异步调用的代码风格实在是与一般的JavaScript代码格格不入. 额外参数 考虑一个除法函数,如果它是纯客户端的同步函数,那么签名会是这样的: function divide(operand1, operand2) 然而假设我们对客户端除法的精度不满意,于是把除法转移到服务器端来执行

写个JavaScript异步调用框架(Part 6

我们用了5篇文章来讨论如何编写一个JavaScript异步调用框架(问题 & 场景.用例设计.代码实现.链式调用.链式实现),现在是时候让我们看一下在各种常见开发情景中如何使用它了. 封装Ajax 设计Async.Operation的最初目的就是解决Ajax调用需要传递callback参数的问题,为此我们先把Ajax请求封装为Async.Operation.我在这里使用的是jQuery,当然无论你用什么基础库,在使用Async.Operation时都可以做这种简单的封装. var Ajax =

JavaScript 异步调用框架 (Part 1 - 问题 & 场景)_javascript技巧

问题 在Ajax应用中,调用XMLHttpRequest是很常见的情况.特别是以客户端为中心的Ajax应用,各种需要从服务器端获取数据的操作都通过XHR异步调用完成.然而在单线程的JavaScript编程中,XHR异步调用的代码风格实在是与一般的JavaScript代码格格不入. 额外参数 考虑一个除法函数,如果它是纯客户端的同步函数,那么签名会是这样的: function divide(operand1, operand2) 然而假设我们对客户端除法的精度不满意,于是把除法转移到服务器端来执行

ajax异步调用一般处理程序实现下载不弹出保存提示

问题描述 ajax异步调用一般处理程序实现下载不弹出保存提示 前端js代码: function QueryExcel() { var data = Ext.getCmp(""frmMain"").GetValues();// 获取json数据 Ext.Ajax.request({ url: '../Services/ReportExportHandler.ashx' // Webservice的地址以及方法名 jsonData: data method: 'POST

写个JavaScript异步调用框架(Part 5

在上一篇文章里面,我们为异步调用框架设计了一种链式调用方式,来增强异步调用队列的代码可读性,现在我们就来编写实现这部分功能的代码. 调用入口 链式调用存在Async.go方法和Async.chain方法两个入口,这两个入口本质上是一致的,只是Async.chain方法在调用时先不提供初始参数,而Async.go方法在调用时提供了初始参数并启动异步调用链. Async.chain = function() { var chain = new Async.Operation({ chain: tru

写个JavaScript异步调用框架(Part 4

我们已经实现了一个简单的异步调用框架,然而还有一些美中不足,那就是顺序执行的异步函数需要用嵌套的方式来声明. 现实开发中,要按顺序执行一系列的同步异步操作又是很常见的.还是用百度Hi网页版中的例子,我们先要异步获取联系人列表,然后再异步获取每一个联系人的具体信息,而且后者是分页获取的,每次请求发送10个联系人的名称然后取回对应的具体信息.这就是多个需要顺序执行的异步请求. 为此,我们需要设计一种新的操作方式来优化代码可读性,让顺序异步操作代码看起来和传统的顺序同步操作代码一样优雅. 传统做法 大

写个JavaScript异步调用框架(Part 2

在上一篇文章里说到,我们要设计一个异步调用框架,最好能够统一同步异步调用的接口,同时具体调用顺序与实现方式无关.那么我们现在就来设计这样一个框架的用例. 传递回调 我们首先要考虑的一个问题是,如何传递回调入口.在最传统的XHR调用当中,回调函数会被作为最后一个参数传递给异步函数: function asyncOperation(argument, callback) 在参数相当多的时候,我们可以把参数放到一个JSON里面,这样参数就如同具名参数一样,可以通过参数名选择性的传递参数,不传递的参数相

浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法

 本篇文章主要是对jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们发现程序执行完后并没有获取到我们想要的值,这时很有可能是因为你用的是ajax的异步调用async:true(默认情况),如:    代码如下: function ManageCommentText(text) { var result = te

submit-form表单提交后ajax异步调用另一个url

问题描述 form表单提交后ajax异步调用另一个url ... ... 提交Submit function submitForm(){ if(_finst_taskComment.value==""){ alert("请填写审批意见"); }else{ document.getElementsByTagName("form")[0].submit(); } } 另一个url如http://........ 解决方案 function submi