jquery ajax参数加点号状态200进error

原创 2015年07月10日 18:22:16

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

用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的类型和返回的类型不一致。

jquery $.ajax status为200 却调用了error方法

$.ajax({ url: "", type: "POST", data: { flow_id ...

ajax请求返回状态为200但还是进入error事件

最近遇到一个问题,发送一个ajax请求,请求成功了,并且放回状态为200,但是就是不进入success事件,添加error事件竟进入了error事件。 代码如下: $.ajax({ url:$W...
  • mafan121
  • mafan121
  • 2016年03月09日 10:29
  • 10033

JQuery ajax请求一直返回Error(parsererror)

$.ajax({ type :"post", url :"busine_in.action", timeout : 40000, data: "centerid...
  • enterys
  • enterys
  • 2012年06月08日 17:36
  • 90092

ajax 请求返回200 但是不进success--2

Java代码   继上次在使用jquery的ajax操作碰到程序请求成功:     1.状态码返回200--表明服务器正常响应了客户端的请求;     2.通过firebug和IE的...

jquery ajax satus为200却出现进入error回调函数

//请求载入文件数据 var loadFile=function(){ $.ajax({ url:'filePreView.do', data:{'id':id,'md5':md5}, ...

Jquery Ajax返回200错误

1.在使用Jquery的Ajax的时候调用后台服务,走的是Ajax的回调error方法,通过回调函数参数ex.status弹出200error:function(ex){ console.log(e...

jquery ajax error函数和及其参数详细说明

使用jquery的ajax方法向服务器发送请求的时候,常常需要使用到error函数进行错误信息的处理,本文详细的说明了ajax中error函数和函数中各个参数的用法。 一般error函数返回的参...

jquery ajax error函数详解

代码:$(document).ready(function() {             jQuery("#clearCac").click(function() {              ...

【ajax】readyState=4并且status=200时,还进error方法

今天在使用jQuery.ajax方法去调用后台方法时,ajax中得参数data类型是"JSON",后台DEBUG调试,运行正常,返回正常的结果集,但是前端一直都进到ajax的error方法,百思不得其...
  • fn_2015
  • fn_2015
  • 2017年04月13日 16:58
  • 2386

jquery $.ajax status为200 却调用了error方法

$.ajax({ url: "", type: "POST", data: { flow_id ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jquery ajax参数加点号状态200进error
举报原因:
原因补充:

(最多只允许输入30个字)