javascript之处理Ajax错误

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>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115401.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • LVS 负载均衡集群(一)| 超详细!一文带你了解 LVS 负载均衡集群

    LVS 负载均衡集群(一)| 超详细!一文带你了解 LVS 负载均衡集群前言如今,在各种互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求也越来越高,单台服务器也将难以无法承担所有的访问需求。当然了,除了使用性价比高的设备和专用负载分流设备外,还有一些其他选择来帮你解决此问题,就是搭建集群服务器通过整合多台普通的服务器设备并以同一个地址对外提供相同的服务,今天杰哥就带领大家学习企业中常用的一种群集技术——LVS。文章目录一、什么是LVS?…

    2022年7月24日
    15
  • c语言代码缩进是什么意思_word文字无法换行

    c语言代码缩进是什么意思_word文字无法换行一、缩进的空格数为4个。二、“{”和“}”各自独占一行。不规范例子:for(i=0;i&lt;student_num;i++);{if((score[i]&gt;=0)&amp;&amp;(score[i])&lt;=100)total_score+=score[i];elseprin…

    2022年10月18日
    2
  • 导入pfx证书

    导入pfx证书打开MicrsoftManangeConsole,你可以按住“Windows+R”,并输入mmc,打开MMC界面。一:添加管理单元(snap-in)从File主菜单中选择“Add/RemoveSnap-in”,打开“AddorRemoveSnap-ins”对话框从左侧的“Availablesnap-ins”列表中选择Certificates,点击”Add>”,打开“Certificatessnap-in”对话框,选择“Computeraccount”:选择snap-

    2022年6月7日
    96
  • 分布式系统的 CAP 定理

    分布式系统的 CAP 定理CAP定理指出,在一个分布式系统中,对于一致性、可用性、分区容错这三个特性,不可能同时满足,而是必须有所舍弃。我们设计分布式系统时,必须在三者之间(尤其是一致性和可用性之间)有所取舍和平衡。作者:王克锋出处:https://kefeng.wang/2018/07/26/distributed-cap/版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。1概述…

    2025年7月20日
    2
  • 回顾外滩踩踏事件,吸取的教训[通俗易懂]

    回顾外滩踩踏事件,吸取的教训[通俗易懂]外滩踩踏事故:悲剧为何发生?外滩踩踏事故:悲剧为何发生?截至当前,上海外滩踩踏事故已造成36人遇难、47人受伤。事故发生的原因初步显现,为外滩观景平台的人流对冲。很多人认为这种归因过于简单,更何况

    2022年7月1日
    194
  • Model、ModelMap和ModelAndView的使用详解

    Model、ModelMap和ModelAndView的使用详解1.前言最近SSM框架开发web项目,用得比较火热。spring-MVC肯定用过,在请求处理方法可出现和返回的参数类型中,最重要就是Model和ModelAndView了,对于MVC框架,控制器Controller执行业务逻辑,用于产生模型数据Model,而视图View用于渲染模型数据。使用Model和ModelAndView这两个类在spring的视图解析时作用以及区别。这两者之间…

    2022年7月25日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号