后台管理菜單,點擊右邊菜單項,左邊內容刷新,整體頁面不刷新


/*
         * 解決ajax返回的頁面中含有javascript的辦法:
         * 把xmlHttp.responseText中的腳本都抽取出來,不管AJAX加載的HTML包含多少個腳本塊,我們對找出來的腳本塊都調用eval方法執行它即可
         */
        function executeScript(html)
        {
            
            var reg = /<script[^>]*>([^\x00]+)$/i;
            //對整段HTML片段按<\/script>拆分
            var htmlBlock = html.split("<\/script>");
            for (var i in htmlBlock) 
            {
                var blocks;//匹配正則表達式的內容數組,blocks[1]就是真正的一段腳本內容,因為前面reg定義我們用了括號進行了捕獲分組
                if (blocks = htmlBlock[i].match(reg)) 
                {
                    //清除可能存在的注釋標記,對於注釋結尾-->可以忽略處理,eval一樣能正常工作
                    var code = blocks[1].replace(/<!--/, '');
                    try 
                    {
                        eval(code) //執行腳本
                    } 
                    catch (e) 
                    {
                    }
                }
            }
        }
        
        /*
         * 利用div實現左邊點擊右邊顯示的效果(以id="content"的div進行內容展示)
         * 注意:
         *   ①:js獲取網頁的地址,是根據當前網頁來相對獲取的,不會識別根目錄;
         *   ②:如果右邊加載的內容顯示頁里面有css,必須放在主頁(即例中的index.jsp)才起作用
         *   (如果單純的兩個頁面之間include,子頁面的css和js在子頁面是可以執行的。 主頁面也可以調用子頁面的js。但這時要考慮頁面中js和渲染的先后順序 )
        */
        function showAtRight(url) {
            var xmlHttp;
            
            if (window.XMLHttpRequest) {
                // code for IE7+, Firefox, Chrome, Opera, Safari
                xmlHttp=new XMLHttpRequest();    //創建 XMLHttpRequest對象
            }
            else {
                // code for IE6, IE5
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
        
            xmlHttp.onreadystatechange=function() {        
                //onreadystatechange — 當readystate變化時調用后面的方法
                
                if (xmlHttp.readyState == 4) {
                    //xmlHttp.readyState == 4    ——    finished downloading response
                    
                    if (xmlHttp.status == 200) {
                        //xmlHttp.status == 200        ——    服務器反饋正常            
                        
                        document.getElementById("content").innerHTML=xmlHttp.responseText;    //重設頁面中id="content"的div里的內容
                        executeScript(xmlHttp.responseText);    //執行從服務器返回的頁面內容里包含的JavaScript函數
                    }
                    //錯誤狀態處理
                    else if (xmlHttp.status == 404){
                        alert("出錯了☹   (錯誤代碼:404 Not Found),……!"); 
                        /* 對404的處理 */
                        return;
                    }
                    else if (xmlHttp.status == 403) {  
                        alert("出錯了☹   (錯誤代碼:403 Forbidden),……"); 
                        /* 對403的處理  */ 
                        return;
                    }
                    else {
                        alert("出錯了☹   (錯誤代碼:" + request.status + "),……"); 
                        /* 對出現了其他錯誤代碼所示錯誤的處理   */
                        return;
                    }   
                } 
                    
              }
            
            //把請求發送到服務器上的指定文件(url指向的文件)進行處理
            xmlHttp.open("GET", url, true);        //true表示異步處理
            xmlHttp.send();
        }  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM