ajax请求状态码200 总是执行error方法

andeelau 2016-09-21 11:14:33
后台action方法 :

Map<String, String> map = new HashMap<String, String>();
JSONObject json = null;
if(userService.exist(user) {
map.put("info", "用户名 " + userName + "已存在");
map.put("result", "failed");
json = JSONObject.fromObject(map);
getWriter().write(json.toString());
} else {
map.put("info", "恭喜,用户名" + userName + "还未被注册");
map.put("result", "success");
json = JSONObject.fromObject(map);
System.out.println(json.toString());
getWriter().write(json.toString());
}

前台ajax:

$('#signup-username').on('blur',function(event){
$.ajax({
type:"post",
url:"register!userNameValidate.action",
data:"userName="+$('#signup-username').val(),
dataType:'json',
success:function(json){
alert(json.info);
checkusername = true;
check();
},
error:function(json){
alert(json.responseText);
alert(json.status);
alert(json.readyState);
},
});
});

这是后台打印的json {"result":"success","info":"恭喜,用户名sdfasdf-fds_还未被注册"}

在FF下可以看到状态码200 响应类型json 却总是执行error

不存在跨域吧?或是json格式有问题?
...全文
2148 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyn0321 2017-08-24
  • 打赏
  • 举报
回复
楼主 你解决这个问题吗 现在我也碰到了这个问题
以梦为马丶 2016-09-25
  • 打赏
  • 举报
回复
给你模板看一下吧 后台:response.getWriter().write(JSON.toJSONString(resMap)); 前台: var options = { dataType: "text", contentType: "text/html; charset=utf-8", success: function(data) { data = jQuery.parseJSON(data); if (data.error_no == 0) { //devShowDialog("修改成功"); screenLoad("/tmall/tmalladvList.htm"); } else { var errorInfo = data.error_info == null ? "修改失败" : data.error_info; if (data.errors != null && data.errors != undefined) { errorInfo += obj2string(data.errors); } devShowDialog(errorInfo); } } }; $("#tmalladvForm").ajaxSubmit(options);
W2G 2016-09-22
  • 打赏
  • 举报
回复
你把汉字去掉试试,不去的话要转成UTF-8把 ServletActionContext.getResponse().setContentType("text/json;charset=UTF-8");
andeelau 2016-09-22
  • 打赏
  • 举报
回复
引用 3 楼 wwg2413980145 的回复:
你把汉字去掉试试,不去的话要转成UTF-8把 ServletActionContext.getResponse().setContentType("text/json;charset=UTF-8");
这个我在getWritter方法里面设定了,没用·
freekaiQaQ 2016-09-22
  • 打赏
  • 举报
回复
可能是接收类型跟不太对,可以多试几次。 dataType:'text' 然后js再转化为json对象
遥远的想念 2016-09-22
  • 打赏
  • 举报
回复
你可以试着讲返回的类型dataType:改成 jsonp 先排除是不是跨域的问题 如果还是不行 就要考虑你传的类型跟你解析的类型是否一致

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧