2014-11-23 100 views
0

我正在使用下面的代码来做一个简单的ajax调用,但它不断记录reportData.report的一个旧值(即它一次工作,然后似乎从未更新)。

var noCache = new Date().getTime(); 
$.getJSON(url, {"noCache": noCache, cache: false}, function(reportData) { 
    console.log(reportData.report); 

但是,控制台中记录的数组与我在Firebug中看到的GET请求的响应不同。我试图用$ .ajax函数来做到这一点,以及禁用缓存(也添加了一个随机参数,以确保它没有缓存)。事实上,我看到Firebug中的正确(更新)的响应让我觉得这不是问题。

它如何保持记录旧数据?

编辑:我使用的是最新版本的Firefox来测试,如果有什么差别

EDIT2:我认为它可能有一些做的UUID即时得到回(例如:23766330297548822)。难道这些是在JavaScript中四舍五入吗?我将如何从JSON数据中正确地检索这个整数(可能是一个字符串?)?

+0

如果您在响应中看到更新的数据,则可能在处理响应时遇到问题 – charlietfl 2014-11-23 14:31:45

+0

但我在回调的第一行记录了reportData。它怎么会出错? – appel 2014-11-23 14:36:59

+0

是您在登录后操作的对象吗?您在控制台中看到的将是活动对象,它会反映您对它做出的任何更改(即使它已记录) – charlietfl 2014-11-23 14:40:05

回答

0

Javascript中的大数字不够准确,所以您不应该依赖它们。试试这个:

var a = 23766330297548822; 
var b = 23766330297548824; 
console.log(a === b); // Returns true :) 

它会说,ab是相等的,但事实并非如此。

尝试使用字符串或使用bigint库,如javascript-bignum

+0

返回的JSON对象中的变量是一个很大的数字,将JavaScript精确地存储为字符串的最佳方法是什么?我试过var report_uuid =''+(reportData.report [i] .uuid);和var report_uuid =(reportData.report [i] .uuid).toString();但两者都不起作用 – appel 2014-11-23 16:12:09

+0

它应该在您请求的json文件中完成。如果该JSON是第三方,那么尝试用大量数字告诉他们这个问题。或者看看这个:https://www.npmjs.org/package/json-bigint – Falc 2014-11-23 16:21:15