2016-05-24 18 views
5

utilizzando AJAX richiedo un authenticationID come questo: enter image description herePerché i valori di jQuery valgono?


Questo è sbagliato perché il vero HTTP-Transfer è questo:

enter image description here

(A proposito: response- type è "application/json; charset = UTF-8")

Vedo uno scontro tra

-1369082024195183657 and 
-1369082024195183600 

Come evitare l'arrotondamento o si tratta di un bug?

+2

Non ho contato le cifre, perché le fornisci solo come immagine. Ma il numero intero massimo in js è '+/- 9007199254740991', tutto quello che poi ha una precisione in virgola mobile. [Qual è il valore intero più alto di JavaScript a cui un numero può andare senza perdere la precisione?] (Http://stackoverflow.com/questions/307179) Se si desidera avere una precisione più elevata è necessario utilizzare una libreria decimale/bignumber. –

+0

Puoi provare a usare float. Sembra grande –

+0

Ma la risposta HTTP non è sempre una stringa? Non dovrebbe essere soggetto a limitazioni di numeri interi a meno che jQuery non provi troppo e decida di convertire la risposta in un numero sotto il cofano. – pawel

risposta

3

jQuery tenta di analizzare la risposta HTTP come numero intero in base al tipo di contenuto JSON.

> JSON.parse("-1369082024195183657") 
-1369082024195183600 

È possibile ignorare lo dicendo jQuery ci si aspetta una stringa impostando la proprietà dataType in $.ajax configurazione:

$.ajax({ 
    dataType : "text", 
    url : "rest/Registration", 
    success : function(data){ 
     // data should be "-1369082024195183657" 
    } 
}) 

Credo che tu non c'è bisogno di fare qualsiasi operazioni aritmetiche su un token authenticationID , quindi puoi semplicemente tenerlo come una stringa.