javascript之處理Ajax錯誤

來源:互聯網
上載者:User

標籤:htm5   前端   網頁設計   javascript   

使用Ajax須留心兩類錯誤。它們的區別源於視角的不同。

第一類錯誤是從XMLHttpRequest對象的角度看到的問題:某些因素阻止了請求發送到伺服器,例如DNS無法解析主機名稱,串連請求被拒絕,或者URL無效。

第二類錯誤是從應用程式的角度看到的問題:它們發生於請求成功發送至伺服器,伺服器接受請求,進行處理並產生響應,但該相應並不指向你期望的內容時。例如:如果你請求的URL不存在,這類問題就會發生。

有三種方式可以處理這些錯誤,如下代碼所示:

<!DOCTYPE html><html lang="zh-CN"><head>    <meta charset="UTF-8">    <title>上海遠地資產管理有限公司</title>    <meta name="author" content="jason"/>    <meta name="description" content="上海遠地資產管理有限公司(簡稱:遠地資產),是一家專業的互連網金融服務平台."/>    <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon"/></head><body>    <div>        <button>Apples</button>        <button>Cherries</button>        <button>Bananas</button>        <button>Cucumber</button>        <button id="badhost">Bad Host</button>        <button id="badurl">Bad URL</button>    </div>    <div id="target">        載入內容    </div>    <div id="errormsg"></div>    <div id="statusmsg"></div>    <script>        var buttons=document.getElementsByTagName("button");        for(var i=0;i<buttons.length;i++){            buttons[i].onclick=handleButtonPress;        }        var httpRequest;        function handleButtonPress(e){            clearMessages();            httpRequest=new XMLHttpRequest();            httpRequest.onreadystatechange=handleResponse;            httpRequest.onerror=handleError;            try{                switch (e.target.id){                    //處理請求錯誤:請求已產生,但主機名稱不能被DNS解析                    case "badhost":                        httpRequest.open("GET","http://a.nodomain/doc.html");                        break;                    //處理設定錯誤:向XMLHttpRequest對象傳遞了錯誤的資料,比如格式不正確的URL                    case "badurl":                        httpRequest.open("GET","http://");                        break;                    //處理應用程式錯誤:請求已成功完成,但當你請求某個不存在的文檔時,會獲得404的狀態代碼;                    default:                        httpRequest.open("GET", e.target.innerHTML+".html");                        break;                }                httpRequest.send();            }catch(error){                displayErrorMsg("try/catch",error.message);            }        }        function handleError(e){            displayErrorMsg("Error event",httpRequest.status+httpRequest.statusText);        }        function handleResponse(){            if(httpRequest.readyState==4){                var target=document.getElementById("target");                if(httpRequest.status==200){                    target.innerHTML=httpRequest.responseText;                }else{                    document.getElementById("statusmsg").innerHTML="Status:"+httpRequest.status+" >>"+httpRequest.statusText;                }            }        }        function displayErrorMsg(src,msg){            document.getElementById("errormsg").innerHTML=src+": "+msg;        }        function clearMessages(){            document.getElementById("errormsg").innerHTML="";            document.getElementById("statusmsg").innerHTML="";        }    </script></body></html>


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

javascript之處理Ajax錯誤

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.