Ajax,使用它可以构建更为动态和响应更灵敏的Web应用程序。该方法的关键在于对浏览器端的JavaScript、DHTML和与服务器异步通信的组合。
ajax最令人激动地就是它的异步请求。当时,又时有需要同步请求的解决方案。
对于普通的ajax请求。可以将
req.open("GET", url, true);中的第三个参数设为false,就可以了。
在dwr中,由于请求都被封装起来了,就没有办法通过上面方法设置同步执行了。
解压dwr.jar,可以发现里面有engine.js,在它的里面有一个方法
DWREngine.setAsync = function(async) {
DWREngine._async = async;
};
这个async默认值为true.
如果需要同步执行的话,就可以在执行的方法加上上面这个设置例如:
DWREngine.setAsync(false);
var _data = "" ;
Messages.getConfrimMessage(function(data){
_data = data ;
});
DWREngine.setAsync(true);
这样的话就会同步执行getConfrimMessage方法。执行以后,你就会发现尽管结果是正确的,但是还会弹出一个[object error]的警告。
这就要了解engine.js中具体的执行顺序,找出问题究竟出现在那里。这个下次再说