zoukankan      html  css  js  c++  java
  • javascript之处理Ajax错误

    使用Ajax须留心两类错误。它们的差别源于视角的不同。

    第一类错误是从XMLHttpRequest对象的角度看到的问题:某些因素阻止了请求发送到server,比如DNS无法解析主机名,连接请求被拒绝。或者URL无效。

    第二类错误是从应用程序的角度看到的问题:它们发生于请求成功发送至server,server接受请求。进行处理并生成响应,但该对应并不指向你期望的内容时。比如:假设你请求的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>


  • 相关阅读:
    PHP window下安装Spl_Types模块
    零碎知识
    Unity MonoDevelop一打开未响应
    Unity 碰撞的例子
    MongoDB的使用技巧(转)
    mongo 与 传统mysql语法对比
    preg_match 与 preg_match_all
    PHP在 win7 64位 旗舰版 报错 Call to undefined function curl_init()
    smarty 教程 及 常用点
    linux 打包 压缩 解压缩
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5373549.html
Copyright © 2011-2022 走看看