zoukankan      html  css  js  c++  java
  • Ajax出现error常见情况(详细版)-火狐浏览器(Firefox)兼容性问题

    作为一个程序员,遇到兼容性问题真的很苦恼,尤其是对我这种前端小菜鸡来说遇到了甚是凄惨。一般来说兼容性问题出现率Chrome < IE < Firefox  (╯°Д°)╯︵┴┴

    言归正传,最近遇到了几次ajax兼容性问题,因此进行了归纳总结,已备以后查看。

    function dealMessageById(messageId,dealFlag)
    {
        $.ajax({
            url: getRootPath() + "/usercenter/message/UserMessage.do?method=DealMessageById", 
            type: "post",
            async:false,      //一般都不写,默认为true。具体信息看下面
            data: {
                "messageId" : messageId,
                "dealFlag" : dealFlag
            },
         dataType: 'json',      //data值类型 contentType:
    "application/x-www-form-urlencoded; charset=UTF-8", success: function(data) {if(data.code == 200) { systemMessageInit(); refreshMessage(); $("#systemTable").html("系统消息("+data.siteInforCount+")"); } else { dialog.alert('失败', '失败'); } }, error: function(XMLHttpRequest, textStatus, errorThrown) {         

            alert(XMLHttpRequest.status);    
            

            alert(XMLHttpRequest.readyState);

             alert(textStatus);

              //以上3个值所对应的意义进入另一篇博文status、readyState、textStatus状态查看

            }
        });
    };

    常见情况:

      1.如果你是火狐浏览器(Firefox),出现错误调用error方法或者ajax请求了多次,那么极有可能是异步请求的原因。

       添加   async  : false  ,

        -> async. 默认是 true,即为异步方式,$.ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发$.ajax里的success方法,这时候执行的是两个线程。

        -> async 设置为 false,则所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。

      2.后台返回的dataType类型和前台js写的不一致会跳入error

       传的不是json格式的数据就不用写 dataType : 'json' ,

         json格式错误也会跳入error.{"test":1} 所以要注意格式。

         在不需要返回值的情况下,扔按模板格式,设置了dataType:"json",参数;这时候,ajax传值正确时,出现200返回成功状态下报错的特殊情况。

      3.url:'http://192.168.1.100:8080/Xxx

       如果你请求的数据不在本地或者不在同一服务器中,那么就可能是跨域问题,要用jsonp,即  dataType : 'jsonp' ,  当然这意思最基础的方法,jsonp和json的格式还是有点小区别的:  jsonp比json多了个方法,即  json= " json格式数据 ",jsonp= " 方法名(json格式数据)",至于跨域的详细的解释和解决方法找度娘吧。

    不常见的情况:

      1.data没有写

        解决方法:data为空也一定要传"{}";不然返回的是xml格式的。并提示parsererror. data:"{}"。

      2.url路径有中文

        解决方法:去掉中文。

      3.传的数据格式ajax不支持

        解决方法:换成json或其他ajax支持的数据格式。

      4.字符编码不匹配

        解决方法:统一UTF-8。

  • 相关阅读:
    yii2 gii 命令行自动生成控制器和模型
    控制器中的方法命名规范
    Vue Property or method "" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based
    IDEA插件:GsonFormat
    Spring Boot : Access denied for user ''@'localhost' (using password: NO)
    Typora添加主题
    Git基础命令图解
    Java Joda-Time 处理时间工具类(JDK1.7以上)
    Java日期工具类(基于JDK1.7版本)
    Oracle SQL Developer 连接Oracle出现【 状态: 失败 -测试失败: ORA-01017: invalid username/password; logon denied】
  • 原文地址:https://www.cnblogs.com/huxiuqian/p/10152166.html
Copyright © 2011-2022 走看看