2016-11-14 5 views
1

正しい値を得ることができない大きな数を四捨五入されており、これは私がポウ/ポストマンのようなプログラムで取得応答である:JSONレスポンスはので、私は、私はAJAX要求を取得行っております

[ 
    { 
    "registrantKey": 4131401026087862797, 
    } 
] 

しかし私が行うとき:

.done(function(data, textStatus, jqXHR) { 
    $.each(data, function(index){ 
    console.log(data[index].registrantKey); 
    }); 
}) 

それが多数のように、この登録キーの値を処理して、コンソールに出力された値があるので、最後の数字を四捨五入されています4131401026087863000.どのように私のように元の値を得るのですかPaw/Postmanに示されている。私はその上で数学演算を実行する必要はありません、私は値が必要です。私はtoString()メソッドを試してみましたが、これを動作させることができませんでした。あなたの助けに感謝します。

更新 残念ながら、これはjavascriptでは不可能です。唯一の解決策は、別の言語を使用すること、または元の開発者に値を文字列として返すことです。 RoryとMadalinに感謝します。

答えて

1

あなたが(多分jqXHRオブジェクトに)文字列としてではなくオブジェクトとしてあなたのJSONにアクセスできる場合は、このような文字列にすべての数字を変換することができます(私の正規表現には注意してください

jsonText = jsonText.replace(/([^\D]\d+[^\D])/g, "\"$1\"").replace(/""/g, "\"");

どのような場合でも動作するかどうかはわかりません)

そして、オブジェクトとしてjsonTextをロードした後。

+0

ありがとうFefux、私の特定のケースでは、私は応答テキストにアクセスしてこの値を得ることができました。私はJavascriptを初めて使っているので、これが可能であることは分かっていませんでしたが、それは治療を受けました!ありがとう:) – user1190132

1

問題はJSの精度に起因し、jQueryやAJAXとは関係ありません。 JSでは、数値には最大16個までの整数、最大で最大9,007,199,254,740,991Number.MAX_SAFE_INTEGER

を表示する必要がある場合は、文字列として扱う必要がありますが、注意してくださいそれがNumber型に変換しようとするとJSが使用できる最大精度に切り捨てられます。

+0

ありがとうロリー、私はあなたが言っていることを得るが、実際にそれを文字列にするにはどうすればいいのだろうか?コールはCitrix APIに対して行われているため、返される値の長さを制御することはできません。私が言ったように、私はtoStringメソッドを試みましたが、これはうまくいきませんでした。 – user1190132

+1

JSからはできません。その段階では遅すぎるので、恐れています。あなたのサーバーからJSに提供されるときは文字列にする必要があります –

+0

Roryさん、ありがとう、本当に迷惑です。私はなぜJavaScriptの数値の長さに制限があるのか​​を知っているが、私はそれが整数である必要はないと言っているので、応答全体を文字列にしてこれを分解する方法があるはずです。ありがとう – user1190132

関連する問題