zoukankan      html  css  js  c++  java
  • 关于jQuery的ajax中取消请求带来的问题

    @(ajax)[error|abort| alert]

    这是jQuery的ajax经常出现的一个问题,其实早些时候我也有碰到过,不过一直以为是系统BUG,没有去深入研究,直到后来看了一个哥们儿博客,才有所深入了解,这里我来说简单说明下:

    jQuery的ajax我们通常喜欢在error方法中添加内容,比如说弹出错误。

            $.ajax({
                type : "post",
                url : "http://localhost:7000/doLogin",
                data : ,
                dataType : "json",
                success : function(data){
                },
                error: function(jqXHR, textStatus, errorThrown){
                        alert('error ' + textStatus + " " + errorThrown);
                },
                complete:function(jqXHR){
                }
            });
     
    

    这里error的三个参数分别是XMLHttpRequest 对象、错误信息、(可选)捕获的错误对象。如果发生了错误,错误信息(第二个参数)除了得到null之外,还可能是timeouterrornotmodifiedparsererror

    这里本身是没有什么问题,但是如果后台是比较耗时的请求,用户等不及数据返回的话,直接按F5刷新页面,这里就会触发$.ajaxabort方法,abort是终止请求,执行完后他会进入到error方法中。

    所以这里我们需要优化代码

                error: function(jqXHR, textStatus, errorThrown){
                       if(textStatus !== "error"){
                         alert('error ' + textStatus + " " + errorThrown);
                       }
                }
     
    

    可能有人会说,这样的话不同的错误信息不也打印不出来了吗?这个倒不用担心,超时timeout,找不到文件(或者已经被缓存)notmodified和 返回格式不正确parsererror,这几种错误已经足够判断了。

  • 相关阅读:
    Ajax调用 打不开新窗口
    杂记3
    todo WebClient学习
    Repeater 嵌套
    动态生成数个gridview Button得到隐藏ID列的值
    SQL 查询间隔时间大于60s的所有数据
    Apache DbUtils
    一步步学Mybatis-告别繁琐的配置之Mybatis配置文件生成工具 (7)
    一步步学Mybatis-怎么样实现动态SQL查询(6)
    一步步学Mybatis-实现简单的分页效果逻辑 (5)
  • 原文地址:https://www.cnblogs.com/GrubbyHunter/p/4263400.html
Copyright © 2011-2022 走看看