Asp.net中Ajax與JQuery的ready函數(shù)沖突怎么辦

字號(hào):


    Asp.net Ajax和Asp.net結(jié)合得很完美,發(fā)現(xiàn)不夠用的時(shí)候,難免想到了Jquery。一般Jquery和Asp.net Ajax這兩樣?xùn)|西結(jié)合使用也常見(jiàn),如果處理好的話,并不會(huì)沖突。但最近發(fā)現(xiàn)Jquery的ready()函數(shù)在PostBack回來(lái)的時(shí)候,ready里執(zhí)行的動(dòng)作竟然無(wú)效了,第一印象:會(huì)不會(huì)Asp.net Ajax和Jqueryd的ready沖突了,然后去掉Asp.net Ajax腳本的引用,果然一切正常了。思前思后,最后給Asp.net Ajax ScriptManager添加一個(gè)add_endRequest(),Jquery的ready終于恢復(fù)正常了
    代碼如下:
    <script type="text/javascript">
    Sys.WebForms.PageRequestManager.getInstance()
    .add_endRequest(EndRequestHandler);
    function EndRequestHandler(sender, args) {
    if (args.get_error() == undefined) {
    PageInit();
    }
    }
    function PageInit() {
    $(document).ready(function() {
    //TODO
    });
    }
    PageInit();
    </script>
    其中,添加上這段代碼,還有一些注意的事項(xiàng),如果這段腳本放置在head里,會(huì)發(fā)生一個(gè)錯(cuò)誤,提示Sys對(duì)象undefined,因?yàn)锳sp.net Ajax的ScriptManager,還沒(méi)有狀態(tài)完,Sys對(duì)象肯定找不到,這時(shí)把這腳本放置在body末尾,一切都正常了。