Почему вкладка Response и JSON отличается в Firebug - PullRequest
0 голосов
/ 28 января 2011

Мой сервлет


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}

И это результат на вкладке JSON в Firebug


accountInfoData []
adminUserKey    Object { userID="admin"}
resultCode  0
sessionID 3788474425691603000
successful  true
userID   "admin"

Как видите, идентификаторы сессий отличаются на двух вкладках.При каждом вызове метода login.login (...) я получаю новый идентификатор сессии.


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 все время.

1 Ответ

0 голосов
/ 28 января 2011

JavaScript использует Doubles (64-разрядные числа с плавающей запятой) для представления числовых значений, поэтому большие числа имеют ограниченную точность и происходит округление. Я столкнулся с этой проблемой с помощью AJAX / JSON, решение состоит в том, чтобы отправить идентификатор сеанса в виде строки вместо числа ("sessionID": 3788474425691603010 вместо "sessionID": "3788474425691603010")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...