javascript代码实例教程-jquery ajax参数加点号状态200进error

发布时间:2019-01-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-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的类型和返回的类型不一致。

 

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-jquery ajax参数加点号状态200进error全部内容,希望文章能够帮你解决javascript代码实例教程-jquery ajax参数加点号状态200进error所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。