此代码返回不同的结果,为什么?
$.getJSON('/myfile.php?year='+anno , function(data) {
var listKey = [];
var values = [];
var mySum = 0 ;
$.each(data, function(key, val){
listKey.push([key]);
values.push(val);
mySum = mySum + val ;
});
});
在Windows console.log(data)上返回:对象{01:3000,02:1500}
在linux console.log(data)上返回:
Object
05: "3000"
06: "1500"
__proto__: Object
__defineGetter__: function __defineGetter__() { [native code] }
__defineSetter__: function __defineSetter__() { [native code] }
__lookupGetter__: function __lookupGetter__() { [native code] }
__lookupSetter__: function __lookupSetter__() { [native code] }
constructor: function Object() { [native code] }
hasOwnProperty: function hasOwnProperty() { [native code] }
isPrototypeOf: function isPrototypeOf() { [native code] }
propertyIsEnumerable: function propertyIsEnumerable() { [native code] }
toLocaleString: function toLocaleString() { [native code] }
toString: function toString() { [native code] }
valueOf: function valueOf() { [native code] }
get __proto__: function __proto__() { [native code] }
set __proto__: function __proto__() { [native code] }
myfile.php:275
在Windows服务器上mySum = 4500
在Linux服务器上mySum = 030001500
我解决了这个问题:
mySum = Number(mySum) + Number(val) ;
现在两个服务器的结果相同,但我不明白为什么会出现这种差异。
答案 0 :(得分:0)
根据输出我判断问题是val
被视为字符串,因为" 0" +" 3000" +" 1500"将返回" 0300015000"。仔细查看正在生成的JSON,以确保不返回字符串 - 您想要总结的数字不会用引号括起来。
至于为什么这只发生在一个操作系统与另一个操作系统上,我认为这是一个红色的鲱鱼。