2016-05-24 2 views
5

Использование Ajax я запросить AuthenticationId так: enter image description hereПочему значение jQuery округляется?


Это неправильно потому что реальный HTTP-Transfer это:

enter image description here

(Кстати: response- type is "application/json; charset = UTF-8")

Я вижу столкновение между

-1369082024195183657 and 
-1369082024195183600 

Как предотвратить округление или это ошибка?

+2

Я не считал цифры, потому что вы предоставляете их только как изображение. Но максимальное целое число в js равно '+/- 9007199254740991', тогда все, что имеет точность, с плавающей запятой. [Что такое наивысшее целочисленное значение JavaScript, которое Number может идти без потери точности?] (Http://stackoverflow.com/questions/307179) Если вы хотите получить более высокую точность, вам нужно использовать десятичную/бинарную библиотеку. –

+0

Вы можете попробовать использовать float. Он выглядит большим. –

+0

Но разве HTTP-ответ не всегда является строкой? Он не должен быть подвержен целым ограничениям, если jQuery слишком сильно пытается и решает преобразовать ответ на число под капотом. – pawel

ответ

3

jQuery пытается проанализировать ответ HTTP как целое на основе типа содержимого JSON.

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

Вы можете изменить его, говоря JQuery вы ожидаете строку, установив dataType свойство в $.ajax конфигурации:

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

Я думаю, вам не нужно делать никаких арифметических операций над маркером AuthenticationId , поэтому вы можете просто сохранить его как строку.

 Смежные вопросы

  • Нет связанных вопросов^_^