2016-05-24 9 views
5

Korzystanie ajax zażądać authenticationID tak: enter image description hereDlaczego jQuery zaokrągla wartość?


To źle ponieważ prawdziwy HTTP-Transfer jest taka:

enter image description here

(Nawiasem mówiąc: response- typ to "application/json; charset = UTF-8")

Widzę konflikt między

-1369082024195183657 and 
-1369082024195183600 

Jak zapobiec zaokrągleniu lub czy jest to błąd?

+2

Nie policzyłem cyfr, ponieważ podajesz je tylko jako obraz. Ale maksymalna liczba całkowita w js to '+/- 9007199254740991', wszystko lager ma wtedy precyzję zmiennoprzecinkową. [Jaka jest najwyższa liczba całkowita JavaScript, do której Numer może przejść bez utraty precyzji?] (Http://stackoverflow.com/questions/307179) Jeśli chcesz mieć wyższą precyzję, musisz użyć biblioteki dziesiętnej/dwupiętrowej. –

+0

Możesz spróbować użyć pływaka. Wygląda na duże. –

+0

Ale czy odpowiedź HTTP zawsze jest łańcuchem? Nie powinien być podatny na ograniczenia całkowite, chyba że jQuery spróbuje zbyt mocno i zdecyduje się przekonwertować odpowiedź na liczbę pod maską. – pawel

Odpowiedz

3

jQuery próbuje przeanalizować odpowiedź HTTP jako liczbę całkowitą na podstawie typu zawartości JSON.

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

Można zastąpić go mówiąc jQuery można oczekiwać ciąg poprzez ustawienie właściwości dataType w $.ajax konfiguracji:

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

Chyba nie trzeba wykonywać żadnych operacji arytmetycznych na dowód authenticationID , więc możesz po prostu zachować go jako ciąg.

Powiązane problemy