Java 为什么firebug中的响应和JSON选项卡不同
我的ServletJava 为什么firebug中的响应和JSON选项卡不同,java,ajax,json,servlets,gson,Java,Ajax,Json,Servlets,Gson,我的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/jso
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响应选项卡中的结果
{"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
}
功能(数据){
//但在回调方法中
//data.sessionID始终为3788474425691603000
//永不改变。
//但是firebug响应选项卡中的sessionID发生了变化
//曾经登录。登录(…)调用,它是真实的
}
我做错了什么。为什么我总是得到相同的sessionID JavaScript在内部使用双精度(64位浮点)来表示数值,因此大数值的精度有限,并且会出现舍入。我用AJAX/JSON的东西遇到了这个问题,解决方案是将会话id作为字符串而不是数字发送(“sessionID”:3788474425691603010 vs.“sessionID”:“3788474425691603010”)