Asp.net Ajax和Asp.net結合得很完美,發現不夠用的時候,難免想到了Jquery。一般Jquery和Asp.net Ajax這兩樣東西結合使用也常見,如果處理好的話,並不會沖突。但最近發現Jquery的ready()函數在PostBack回來的時候,ready裡執行的動作竟然無效了,第一印象:會不會Asp.net Ajax和Jqueryd的ready沖突了,然後去掉Asp.net Ajax腳本的引用,果然一切正常了。思前思後,最後給Asp.net Ajax ScriptManager添加一個add_endRequest(),Jquery的ready終於恢復正常了
代碼如下<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>
其中,添加上這段代碼,還有一些注意的事項,如果這段腳本放置在head裡,會發生一個錯誤,提示Sys對象undefined,因為Asp.net Ajax的ScriptManager,還沒有狀態完,Sys對象肯定找不到,這時把這腳本放置在body末尾,一切都正常了。