我的Servlet
public class JSONServlet extends HttpServlet {
private static Gson gson = new Gson();
public void doPost (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
res.setContentType("application/json");
res.getWriter().write(gson.toJson(returnVal));
}
}
我的登录功能
login.login=function(parm0){
$.post(login.url,
{
operation:'login',
userID: 'admin',
parmData0: JSON.stringify(parm0),
parmType0: 'com.company.share.svc.login.data.LoginData'
},
function(data){
loginHandler(data);
},
'json');
}
我如何调用我的登录功能
login.login({userID: 'admin', password: 'admin', forceOut: true});
这是firebug Response选项卡
的结果
{"adminUserKey":{"userID":"admin"},"resultCode":0,"sessionID":3788474425691603010,"accountInfoData":[],"userID":"admin","successful":true}
这是导致firebug中的JSON选项卡
的结果
accountInfoData []
adminUserKey Object { userID="admin"}
resultCode 0
sessionID 3788474425691603000
successful true
userID "admin"
如您所见,两个标签中的sessionID不同。在每个login.login(...)方法调用中,我都会获得一个新的会话ID。
function(data){ //But in callback method //data.sessionID is always 3788474425691603000 //and never changes. //But sessionID in firebug Response tab changes //ever login.login(...) call and it is true one }
我做错了什么。为什么我总是得到相同的sessionID。
答案 0 :(得分:0)
JavaScript在内部使用双打(64位浮点数)来表示数值,因此大数字的精度有限,并且会发生舍入。我用AJAX / JSON-stuff解决了这个问题,解决方案是将session-id作为字符串而不是数字发送(“sessionID”:3788474425691603010 vs.“sessionID”:“3788474425691603010”)