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的类型和返回的类型不一致。
jquery ajax參数加点号状态200进error的更多相关文章
- jQuery ajax请求错误返回status 0和错误error的问题
上周发现一个jQuery ajax请求错误返回status 0和错误error的问题,responseText是"error",状态码是0而不是200: $.ajax({ type ...
- jQuery Ajax传递数组到asp.net web api参数为空
前端: var files = []; files.push({ FileName: "1.jgp", Extension: ".jgp", FileType: ...
- jQuery ajax 传递数组到struts2
使用jQuery的$.ajax()方法进行异步交互时,如果传递的数据有数组(例如传输checkbox数据),Action中经常会接受不到数据. 此时应该注意一下data中数组的写法,例如: //组合成 ...
- 前台ajax请求php后台返回成功却进error方法解决
最近几天一直都在解决error问题,周末都没能好好过,悲痛万分,想逃走
- mvc jquery ajax传递数组null问题
mvc jquery ajax传递数, areaIds是个int数组.后台action用list<int>接收.当我想传空值时,先用null传递,结果action收到的AreaIds竟然 ...
- jQuery.ajax()方法中參数具体解析
前言 在项目开发中,为了实现异步向服务端发起请求,最常常使用的就是jQuery.ajax方法了.刚開始需求比較简单,调用jQuery.ajax方法时要传的參数也就那几个常见的參数:url/data/d ...
- jQuery(expression, [context]) , $(即jQuery)的參数问题
jQuery(expression, [context]) 返回值:jQuery 概述 这个函数接收一个包括 CSS 选择器的字符串,然后用这个字符串去匹配一组元素. jQuery 的 ...
- jQuery UI dialog 參数说明
前段时间碰到个问题 jquery UI dialog弹出层 弹出多个层是 比方弹出两个层A和B B层假设显示的数据表格太大,伸到了A层的外面,那伸到A层之外的部分就看不到了,由于B层是在A层上弹出的 ...
- 【转】jQuery 的 ajax 方法,返回结果 readyState=4 并且 status=200 时,还进 error 方法
今天在使用jquery.ajax方法去调用后台方法时,ajax中得参数data类型是"JSON",后台DEBUG调试,运行正常,返回正常的结果集,但是前端一直都进到ajax的err ...
随机推荐
- 利用cURL会话获取一个网页
1.curl_init 作用: 初始化一个新的会话.返回一个cURL句柄,供curl_setopt(), curl_exec()和curl_close() 函数使用. 格式: curl_ ...
- npm换国内淘宝镜像
来源于:http://yijiebuyi.com/blog/b12eac891cdc5f0dff127ae18dc386d4.html 为什么要换源? npm 官方站点 http://www.npmj ...
- 更安全的HTTPS
iOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL.采用TLS 1.2 协议,目的是 强制增强数据访问安全,而且 系统 Foundation 框 ...
- 【JAVA】Exception in thread "main" java.lang.NoClassDefFoundError
java新手经常会遇到这个问题. 环境变量配置正确,eclipse下可以正常编译运行,命令行下可以使用javac生成.class文件,但是在当前目录运行的时候提示: 分析报错,可以发现系统从Pack文 ...
- RabbitMQ与.net core(一)安装
一.安装Erlang环境 前提:erlang版本与rabbitmq版本需按照要求对应!!! 1.在安装erlang之前先安装下依赖文件(这一步不要忘掉了, 不然后面./configure的时候要报错) ...
- selenium python学习笔记---添加等待时间
http://selenium-python.readthedocs.io/waits.html 有时候为了保证脚步运行的稳定性,需要在脚本中添加等待时间 添加休眠:需要引入time包,选择一个固定的 ...
- Spring boot设置启动监听端口
一.通过配置 修改application.properties 在属性文件中添加server.port=8000 二.直接看代码: @Controller @EnableAutoConfigurati ...
- powerdesigner基础操作
一.建表 1. 打开PowerDesigner,点击File->New 2. 选择Conceptual Data Model,并修改Model name. 3. ...
- rubygems ruby国内源
rubygems.org资源不能正常访问,需要调整一下GEM的source镜像 1.首先确认一下当前source镜像地址 gem sources -l 服务器为 https:// ruby ...
- Java:多线程,线程同步,同步锁(Lock)的使用(ReentrantLock、ReentrantReadWriteLock)
关于线程的同步,可以使用synchronized关键字,或者是使用JDK 5中提供的java.util.concurrent.lock包中的Lock对象.本文探讨Lock对象. synchronize ...