js~ajax获取后端HTTP状态的几种情况

摘要:
Jquery向后端接口发送ajax请求,后端向前端返回数据。当然,后端接口也直接重定向到其他接口,然后将数据返回到前端。当然,在这种情况下需要考虑跨域问题。

jquery发起ajax请求到后端接口,后端向前端返回数据,当然也存在后端接口直接重定向(302)到其它接口,然后再向前端返回数据,当然这种情况需要考虑跨域问题。

前端代码
  //测试一下http status
        $.ajax({
            type: "get",
            url: "/redirect",
            statusCode: {
                401: function () {
                    console.log("401");
                },
                404: function () {
                    console.log("404");
                },
                200: function () {
                    console.log("200");
                },
                302: function () {
                  // 获取不到当前页的状态,因为已经跳转,直接为目标页的状态
                  // 目标页返回是404,则前端接收就是404,当然如果目标页存在跨域的情况,那前端是没有状态返回的
                 console.log("302");
                }
            }
        });
后端请求

一 正常返回

如果只是后端接口直接返回数据,就使用后端接口状态,可能是200,400,401,403,500等

二 重定向

1 如果是同源(域)情况,直接返回重定向接口的状态码,下面例子中重定向到/a404接口,这个接口返回状态码是404,前端得到的响应码就是404

    @GetMapping("/redirect")
    public void rerei(HttpServletRequest request, HttpServletResponse response) {
       response.sendRedirect("http://localhost:9090/a404");
    }
    @GetMapping("/a404")
    public void a404(HttpServletResponse response){
        response.setStatus(404);
    }

2 如果是跨域情况,如果目标接口的服务端没有开启跨域策略,则不能返回状态

  @GetMapping("/redirect")
    public void rerei(HttpServletRequest request, HttpServletResponse response) {
       response.sendRedirect("http://www.baidu.com");
    }

401
这种情况的话,前端无法得到HTTP响应码,这只能在后端去处理,在前后分离的状态里,尽量不要在后端直接重定向,而是输出对应的响应结果,由前端完成重定向工作。

免责声明:文章转载自《js~ajax获取后端HTTP状态的几种情况》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇常用4种限流算法介绍及比较安卓 微信 input file change无效 调试下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

(转)JS window对象的top、parent、opener含义

1.top    该变更永远指分割窗口最高层次的浏览器窗口。如果计划从分割窗口的最高层次开始执行命令,就可以用top变量。 2.opener opener用于在window.open的页面引用执行该window.open方法的的页面的对象。例如:A页面通过window.open()方法弹出了B页面,在B页面中就可以通过opener来引用A页面,这样就可以通...

JS几个常用的工具函数

  项目中JS也不可避免会出现重用,所以可以像Java一样抽成工具类,下面总结了几个常用的函数: 1.日期处理函数   将日期返回按指定格式处理过的字符串: function Format(now,mask) { var d = now; var zeroize = function (value, lengt...

Web Worker javascript多线程编程(一)

什么是Web Worker? web worker 是运行在后台的 JavaScript,不占用浏览器自身线程,独立于其他脚本,可以提高应用的总体性能,并且提升用户体验。 一般来说Javascript和UI页面会共用一个线程,在HTML页面中执行js脚本时,页面的状态是不可响应的,直到脚本已完成。而这段代码可以交给Web Worker在后台运行,那么页面在...

Response.flush的用法

很多时候我们写的程序,会花上一分钟甚至几分钟时间。为了使软件使用者能够耐心的等待程序的执行,我们经常会希望有一个进度条来表示程序执行的状态。或者最起码要显示一个类似: “数据载入中”,“正在保存数据” 等的说明性文字。此时我们就会用到Response.flush()(刷新缓冲区数据)。他会将缓冲区中编译完成的数据先发送到客户端。 (引用: 但是有很多时候,...

模板引擎doT.js用法详解(HTML模板引擎)

作为一名前端攻城师,经常会遇到从后台ajax拉取数据再显示在页面的情境,一开始我们都是从后台拉取再用字符串拼接的方式去更达到数据显示在页面! <!-- 显示区域 --> <div id="testid"></div> <script type="text/javascript"> var testjso...

JS数据类型转换

JS数据类型转换方法主要有三种:转换函数、强制类型转换、利用js变量弱类型转换。 1、转换函数: js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。  在判断字符串是事是数字值前,...