[转]dwr 远程调用选项

dwr 远程调用选项(转自:wellstrand.spaces.live.com/Blog/cns!8FD7D4CB30D9972D!300.entry)

远程调用选项

DWR有一些选项用来控制远程调用的处理方式。method和verb对于用户应该时透明的,但是不同的浏览器效果的可能不一样。一般来说DWR会选择正确方法来处理,但是这些选项对于在不同效果的浏览器之间开发很有用。

DWREngine.setAsync(flag)

DWR1.0不支持。

我们指定让XHR异步调用了吗? 默认为true。警告如果你使用的时IFrame或者ScriptTag这一选项被忽略。一般来说把他变成false是个糟糕的做法。因为那样会使你的浏览器变慢。

要设置全局同步机制:

DWREngine.setAsync(true);

或者设置单次调用同步:

Remote.method(params, { callback:function(data) { ... }, async:true });

或者在batch里面:

DWREngine.beginBatch(); Remote.method1(params, callback1); Remote.method2(params, callback2); DWREngine.endBatch({ async:true });

DWREngine.setMethod(newmethod)

用来设置恰当的方法。setMethod()不能把正使用你选择的方 法,它只是保证首先尝试使用那个方法。newmethod必须是DWREngine.XMLHttpRequest或者 DWREngine.IFrame,或者2.0以后的DWREngine.ScriptTag。

XMLHttpRequest时默认的,并且大多情况下可用。当ActiveX禁用IFrame就有用了,尽管DWR能自动检测出这种情况并切换到IFrame。当你要突破跨域调用的限制,ScriptTag就很有用了。

例如,要设置全局的远程调用方法:

DWREngine.setMethod(DWREngine.IFrame);

或者单次调用:

Remote.method(params, { callback:function(data) { ... }, method:DWREngine.IFrame });

或者批量调用:

DWREngine.beginBatch(); Remote.method1(params, callback1); Remote.method2(params, callback2); DWREngine.endBatch({ method:DWREngine.IFrame });

DWREngine.setVerb(verb)

这个选项允许你选择POST和GET,无论时用iframe还是 XMLHttpRequest方法。一些浏览器(例如,旧版的Safari)不支持XHR-POST所以DWR就自动切换到GET,即使你设置POST为 verb。所以setVerb()应当被仅仅做为一个堤示。

如果使用ScriptTag来远程调用,设置verb时没有的。

例如,设置全局远程调用的verb:

DWREngine.setVerb("GET");

设置单次调用:

Remote.method(params, { callback:function(data) { ... }, verb:"GET" });

设置批量调用:

DWREngine.beginBatch(); Remote.method1(params, callback1); Remote.method2(params, callback2); DWREngine.endBatch({ verb:"GET" });

你可能感兴趣的:(DWR)