zoukankan      html  css  js  c++  java
  • jquery ajax參数加点号状态200进error

    今天开发中遇到一个非常恶心的问题:

    用jquery中的ajax提交。发现假设參数中有点号的參数。后台正常返回200状态码的情况下也会走到error:function。

    1. 參数data: "topicAbstractInfoVO.belongSubjectId="+subjectId

    2. 參数data:“belongSubjectId="+subjectId,

    请求正常返回,状态为200。

    第一种情况,跳到了error处理块。另外一种情况跳到success处理块。

    ajax请求代码例如以下:

    $.ajax({
     url: "/topic/saveMarkDraft.action",
         dataType: "json",
     type: "POST",
         data: "topicAbstractInfoVO.belongSubjectId="+subjectId,
         async:true,
         success: function(msg){
         var a=2;
         var b=a;
         alert(b);
         alert(msg);
         },
         error:function(msg){
         var a=1;
         var b=a;
         if(msg.responseText=="saveMarkSuccess"){
         alert(b);
         }
         alert(msg);
         }
    });

    后台处理方法:

        public String addMarkDraft() {
            print("saveMarkSuccess");
            return "saveMarkSuccess";
        }

    排查问题:

    1. 之前有遇到过类似返回200时跳到error模块的情况。是由于dataType设置的为html,返回内容为json。类型不匹配也会导致这个问题。(今天的问题不是这个原因,排除)

    2. 前面另一个类似的方法也是返回json,js是一样的配置。是没有问题的;经过对照代码发现一个不同点,就是print()方法

    2.1 正确的方法是这样返回的

       public String addMarkDraft() {
            String te = JsonUtil.toJson("saveMarkSuccess");
            print(te);
            return "saveMarkSuccess";
        }

    改动方法有两种:

    1. 将ajax的dataType改为text

    2. 将后台返回的字符串"saveMarkSuccess"用json转下

    结论:

    因为返回的内容不是json格式,是string格式。根本问题还是因为js的类型和返回的类型不一致。

    总结:

    1.  尽管对于一个字符串,用json序列化后还是一个字符串,通过打印日志发现一个String的字符串用json序列化后没有什么变化。

    2.  实际上返回到前台的类型是不一样的。一个是纯文本,一个json格式。尽管看起来是一样的,实际上是不同的(因为String在java是一个对象,不是原生类型,所以用json处理后是有变化,详细变化没有时间细纠。先记住)。

    这一点一定要注意

    3.  假设ajax要求返回的是json串。无论后台的处理类型是什么,最好都通过json进行序列化一下,即便是普通类型



    结论:

    因为返回的内容不是json格式,是string格式。根本问题还是因为js的类型和返回的类型不一致。

  • 相关阅读:
    (转)【经验之谈】Git使用之Windows环境下配置
    (转)SQL Server内存遭遇操作系统进程压榨案例
    (转)【javascript基础】原型与原型链
    (转)微信公众平台开发教程目录
    (转)C# .net微信开发,开发认证,关注触发消息,自动应答,事件响应,自定义菜单
    (转)利用快速开发框架,快速搭建微信浏览博客园首页文章
    (转)微信公众平台开发教程(七)Session处理
    多线程入门-创建线程
    MySQL数据库优化
    图解:从单个服务器扩展到百万用户的系统
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/6708249.html
Copyright © 2011-2022 走看看