1. UUID 128位占用空间较多
    2. (重要)UUID是无序的在插入数据时会造成索引重排,如果是有序的主键直接在B+树的最后插入数据即可

jsonp请求响应成功,但进入到error函数

编程套路 骐骏 5年前 (2016-11-02) 2153次浏览 已收录 0个评论 扫描二维码

发送jsop请求,请求发送成功,http状态码为200,但依然进入error函数,纠结万分。
先贴代码:

js代码如下:

$.ajax({
url:url,
dataType:"jsonp",
// async:false, jsonp不支持async:false
method:"get",
success:function(data){
$("#headDiv").append(headView.htmlBuild(data));
},
error:function(data){
console.info(data);
}
});

服务端代码如下:java实现

public String isLogin(HttpServletRequest request,HttpServletResponse response){
try {
String callback = request.getParameter("callback");

//此处不应使用map
Map json = new HashMap();
json.put("isLogin", isLogin);
if(isLogin){
Long memberId = LoginStateUtil.getMemberId(request);
MemberVo memberVo = memberService.findById(memberId);
json.put("memberName", memberVo.getUsername());
}
callback += "("+json+")";
return callback;
} catch (Exception e) {
logger.error("系统异常:", e);
return "";
}
}

进入error函数,控制打印返回值:

Object {readyState: 4, responseText: "jQuery111307915938625407029_1478056043394({isLogin=false})", status: 200, statusText: "OK"}

调整服务端代码

public String isLogin(HttpServletRequest request,HttpServletResponse response){
try {
String callback = request.getParameter("callback");

//此处有更改
JSONObject json = new JSONObject();
json.put("isLogin", isLogin);
if(isLogin){
Long memberId = LoginStateUtil.getMemberId(request);
MemberVo memberVo = memberService.findById(memberId);
json.put("memberName", memberVo.getUsername());
}
callback += "("+json+")";
return callback;
} catch (Exception e) {
logger.error("系统异常:", e);
return "";
}
}

此时请求可以正常响应,在success函数中打印请求返回的data:

Object {isLogin: false}

简单总结:

由于后台响应数据格式错误导致进入到error函数
另附相关博文一篇《一次关于JSONP的小实验与总结


原创不易,转载请注明原文链接:jsonp请求响应成功,但进入到error函数
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址