<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    I'll be back!

      Focus on BPM, celebrate PegaRULES Process Commander (PRPC)
    posts - 76, comments - 161, trackbacks - 0, articles - 2
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    dojo.io.bind 介紹

    Posted on 2006-10-25 11:02 zolly 閱讀(2030) 評(píng)論(1)  編輯  收藏
    Introduction to dojo.io.bind
    ? ?dojo.io包很好的封裝了XMLHTTP和其它比較復(fù)雜的傳輸機(jī)制(iframe等)。另外"transports"傳輸器以插件形式(實(shí)現(xiàn)的統(tǒng)一的接口)出現(xiàn),另外dojo對(duì)于XMLHTTP的支持解決了back button的問(wèn)題。我們先拋開細(xì)節(jié),看看dojo提供給我們的public API.
    ? ?dojo.io的許多不可思議的功能都由bind()方法來(lái)實(shí)現(xiàn)。(可能腳本語(yǔ)言或不定參數(shù)的語(yǔ)言都喜歡這樣,說(shuō)實(shí)話,我不喜歡)。dojo.io.bind()是一個(gè)普通的匿名請(qǐng)求API,它的底層可以是不同的傳輸機(jī)制(queues of iframes, XMLHTTP, mod_pubsub, LivePage, 等)。dojo會(huì)嘗試選擇最好的傳輸機(jī)制,如果你的環(huán)境支持多種傳輸機(jī)制,XMLHTTP會(huì)是dojo的首選。bind()方法的參數(shù)是一個(gè)簡(jiǎn)單的匿名對(duì)象,當(dāng)然這個(gè)對(duì)象的屬性是異常靈活的。
    ?如果你要得到一個(gè)text文件,可能代碼如下:

    dojo.io.bind({
    ???url:?
    "http://foo.bar.com/sampleD,
    ???load:?function(type,?data,?evt){?/*do?something?w/?the?data?*/?},
    ???mimetype:?
    "text/plain"
    });

    和prototype.js/YUI等差不多,簡(jiǎn)單的代碼可以得到數(shù)據(jù)??赡苣阋蚕氲?,如果出現(xiàn)錯(cuò)誤怎么 辦,簡(jiǎn)單注冊(cè)一個(gè)錯(cuò)誤處理函數(shù)就好了:

    dojo.io.bind({
    ???url:?
    "http://foo.bar.com/sampleD,
    ???load:?function(type,?data,?evt){?/*do?something?w/?the?data?*/?},
    ???error:?function(type,?error){?/*do?something?w/?the?error*/?},
    ???mimetype:?
    "text/plain"
    });


    dojo也可以把所有的處理放到一個(gè)函數(shù)里,如下:

    dojo.io.bind({
    ???url:?
    "http://foo.bar.com/sampleD,
    ???handle:?function(type,?data,?evt){
    ???????if(type?==?
    "load"){
    ???????????//?do?something?with?the?data?object
    ???????}else?if(type?==?
    "error"){
    ???????????//?here,?
    "data"?is?our?error?object
    ???????????//?respond?to?the?error?here
    ???????}else{
    ???????????//?other?types?of?events?might?get?passed,?handle?them?here
    ???????}
    ???},
    ???mimetype:?
    "text/plain"
    });

    考慮性能原因,Ajax經(jīng)常重服務(wù)器返回一段可執(zhí)行的javascript代碼段,在瀏覽器中eval(它)。你只要指定mimetype: "text/javascript" 就

    可以了,dojo會(huì)自動(dòng)為你 eval這些javascript代碼,

    dojo.io.bind({
    ???url:?
    "http://foo.bar.com/sampleD,
    ???load:?function(type,?evaldObj){?/*?do?something?*/?},
    ???mimetype:?
    "text/javascript"
    });

    你也可以指定你使用哪種傳輸器 如 XMLHTTPTransport:

    dojo.io.bind({
    ???url:?
    "http://foo.bar.com/sampleD,
    ???load:?function(type,?evaldObj){?/*?do?something?*/?},
    ???mimetype:?
    "text/plain",?//?get?plain?text,?don't?eval()
    ???transport:?
    "XMLHTTPTransport"
    });


    Being a jack-of-all-trades, bind() also supports the submission of forms via a request (with the single caveat that it won't do file upload over XMLHTTP):
    ????得看看代碼?是否url會(huì)覆蓋action.

    dojo.io.bind({
    ???url:?
    "http://foo.bar.com/process,
    ???load:?function(type,?evaldObj){?/*?do?something?*/?},
    ???formNode:?document.getElementById(
    "formToSubmit")
    });


    呵呵,不錯(cuò)吧。下面看看幾個(gè)傳輸器。

    Transports:
    dojo.io.bind和其它相關(guān)函數(shù)與服務(wù)器通信有幾種方法,叫Transport,每種Transports可能都有缺陷,因此在特定場(chǎng)合你必須選擇合適的transport。
    默認(rèn)的transport是大家熟悉的 XMLHttp.

    XMLHttp

    xmlhttp在大部分情況下工作的很好,但它不能上傳文件,不能跨域工作,也不能在file://協(xié)議下工作。(dojo也代替的方案)

    例子代碼:

    <script?type="text/javascript">???dojo.require("dojo.io.*");???
    function?mySubmit({?????
    ???dojo.io.bind?(
    {???????
    ???url:?'server.cfm',??????
    ???handler:?callBack,???????????
    ???formNode:?dojo.byId('myForm')????
    ?}
    );??
    }
    ???
    function?callBack(type,?data,?evt)?{??
    ???dojo.byId('result').innerHTML?
    =?data;??
    }

    </script>


    IFrame I/O:
    IFrame I/O transport是有用的,它可以上傳文件. ?例子代碼:

    <script?type="text/javascript">???dojo.require("dojo.io.*");???
    dojo.require(
    "dojo.io.IframeIO");?
    function?mySubmit()?{?????
    ?dojo.io.bind?(
    {???????????url:?'server.cfm',???????
    ???handler:?callBack,???????
    ???formNode:?dojo.byId('myForm')???????}
    );???
    }
    ???
    function?callBack(type,?data,?evt)?{??????
    ?dojo.byId('result').innerHTML?
    =?data;???
    }

    </script>

    The response type from the above URL can be text, html, or JS/JSON.
    這種響應(yīng)類型的url可以是text,html或者js/json.

    摘自:zkjbeyondhttp://zkj.wisekernel.net/read.php/14.htm

    評(píng)論

    # re: dojo.io.bind 介紹  回復(fù)  更多評(píng)論   

    2013-08-12 02:16 by whut_lp
    受益匪淺

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲黄色在线电影| 亚洲av片劲爆在线观看| 亚洲 日韩 色 图网站| 91福利免费视频| 久久精品国产精品亚洲毛片| 国产成人久久AV免费| 亚洲国产精品免费视频| 污视频在线观看免费| 国产大片免费天天看| 免费一级毛片清高播放| 337p日本欧洲亚洲大胆精品555588 | 毛片免费全部免费观看| 亚洲精品无AMM毛片| 国产在线98福利播放视频免费| 极品色天使在线婷婷天堂亚洲| 亚洲另类激情专区小说图片| 一级毛片正片免费视频手机看 | 亚洲bt加勒比一区二区| 免费能直接在线观看黄的视频| 亚洲中文字幕久久久一区| 久久久久高潮毛片免费全部播放 | 亚洲毛片av日韩av无码| a毛片免费全部播放完整成| 亚洲国产精品免费视频| 国产精品成人免费视频网站京东| 亚洲爆乳无码精品AAA片蜜桃| 亚洲男人的天堂在线va拉文| 伊人久久免费视频| 亚洲最大无码中文字幕| AV在线亚洲男人的天堂| 久久永久免费人妻精品下载| 亚洲日韩国产AV无码无码精品| 亚洲国产小视频精品久久久三级 | 岛国岛国免费V片在线观看 | 免费三级毛片电影片| 国产成人高清亚洲一区91| 亚洲AV无码专区国产乱码4SE | 永久免费av无码网站韩国毛片| 无遮挡a级毛片免费看| 色噜噜综合亚洲av中文无码| 成人人免费夜夜视频观看|