2016-05-24 18 views
5

mit Ajax Ich bitte um ein authenticationID wie folgt aus: enter image description hereWarum jQuery Werte rundet?


Dies ist falsch denn das eigentliche HTTP-Übertragung ist dies:

enter image description here

(By the way: response- Typ ist "application/json; charset = UTF-8")

Ich sehe einen Konflikt zwischen

-1369082024195183657 and 
-1369082024195183600 

Wie verhindert man die Rundung oder ist es ein Fehler?

+2

Ich habe die Ziffern nicht gezählt, weil Sie sie nur als Bild bereitstellen. Aber die maximale Ganzzahl in js ist '+/- 9007199254740991', alles, was dann mehr Gleitkommapräzision hat. [Was ist der höchste ganzzahlige Wert von JavaScript, zu dem eine Zahl gehen kann, ohne die Genauigkeit zu verlieren?] (Http://stackoverflow.com/questions/307179) Wenn Sie eine höhere Genauigkeit wünschen, müssen Sie eine Dezimal/Bignumber-Bibliothek verwenden. –

+0

Sie können versuchen, Float zu verwenden. Es sieht groß aus. –

+0

Aber ist HTTP-Antwort immer eine Zeichenfolge? Es sollte nicht für ganzzahlige Beschränkungen anfällig sein, es sei denn, jQuery versucht zu viel und entscheidet sich, die Antwort in eine Zahl unter der Haube zu konvertieren. – pawel

Antwort

3

jQuery versucht, die HTTP-Antwort basierend auf dem JSON-Inhaltstyp als Ganzzahl zu analysieren.

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

Sie können es überschreiben, indem jQuery sagen Sie, indem Sie die dataType Eigenschaft in $.ajax Konfiguration einen String erwarten:

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

Ich denke, man keine arithmetische Operationen auf einem authenticationID Token tun müssen, , so können Sie es einfach als String behalten.