公司设计网站详情,wordpress默认用户名密码,国际域名的外贸网站,用html做简单网站在Ajax开发框架中#xff0c;最基本的划分是服务器端和客户端。服务器端相对来说比较简单#xff0c;只要是可以开发动态网页的语言都可以胜任#xff1b;客户端浏览器就是JScript/JavaScript的天下了#xff0c;好像没有看到有VBScript做的Ajax客户端库#xff0c;就算它… 在Ajax开发框架中最基本的划分是服务器端和客户端。服务器端相对来说比较简单只要是可以开发动态网页的语言都可以胜任客户端浏览器就是JScript/JavaScript的天下了好像没有看到有VBScript做的Ajax客户端库就算它只支持IE。由于客户端依赖于脚本并运行在浏览器中似乎比服务器端的可实现和可管理性还要差些。 这里我说一下Ajax中的A, Asynchronous调用的一些问题。如果我们在异步调用时不为方法传递任何的参数那么这个问题也就简单甚至不存在了。但是事实上我们开发一些稍微复杂些的功能时对于脚本异步并发调用参数传递这个功能是很需要的。说的严重些可以把这个功能看成Ajax客户端框架能否真正Asynchronous的基石。对于异步调用参数传递的问题可以看我以前的一篇文章使用匿名函数为setInterval传递参数。虽然文中的示例很好地解决了参数传递问题但是我们看看下面的示例看会发现什么呢 function foo(){ var param 100; window.setTimeout(function() { intervalRun(param); }, 0); param 0;}function intervalRun(times){ alert(times);} 我们执行foo会得到什么样的alert结果呢100? or 0?答案是0。其实写过内嵌函数就知道这里要真确的传入100需要这样改写foo方法function foo(){ var param 100; var __param param; window.setTimeout(function() { intervalRun(__param); }, 0); param 0;}// 这样添加一个变量来存储param就可以了这下执行foo得到的alert结果就是100。 上面这个修正本身没有问题可是如果我在并发执行的情况下就可能又有新的问题。示例代码 function doTick(){ var tick new Date().getTime(); var __tick tick; var foo function() { GetTick(__tick); }; window.setTimeout(foo, 3000);}function GetTick(tick){ // to do something depend on tick parameter} 当我们在调用doTick方法时如果以小于3000ms的频率并发将会导致前一次的tick变量被后面执行的执行过程修改的问题从而导致GetTick方法取到错误的tick参数。也就是说必须把doTick方法看成一个需要本身执行时间3000ms才能运行完的方法然后再保证并行的执行doTick方法才不会出错。这样的限制条件显然是不可接受的那么我们该怎么办呢 其实我们只需要使用内嵌函数自身帮助我们传递参数就行了修改后的示例如下 function doTick(){ var tick new Date().getTime(); var foo function() { var __tick foo.params[0]; GetTick(__tick); }; foo.params [tick]; window.setTimeout(foo, 0);} 由于内嵌函数构造出一个Closure Scope它将帮组我们保存参数的Context使我们获得真正的异步并发调用参数传递效果。 注意Closure Scope是JScript编程中危险的高级技术使用不当极易造成IE Memory Leak。转载于:https://www.cnblogs.com/birdshome/archive/2006/03/10/Ajax_Base.html