我一直在解决这个问题。在我的本地计算机上,值“00”(双零)包含在引号内,但在服务器上它不包围它周围的双引号。
Ajax Call:
var loadFriends = $.ajax({
type: "GET",
url: "/webFolder/friends/list",
dataType: "json",
data: {vID: 15},
cache: false,
success: function(returnData){
var d = cfQueryNormalize(returnData);
// console.log(d);
// return;
if (!jQuery.isEmptyObject(d)) {
do something...
}else{
do something...
}
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(textStatus);
console.log(errorThrown);
}
});
// script from Raymond Camden @ http://www.raymondcamden.com/2012/5/11/Using-CFC-data-with-Handlebars
function cfQueryNormalize(d) {
var result = [];
for(var i=0, len=d.DATA.length; i<len;i++) {
var item = {};
for(var k=0,innerlen=d.COLUMNS.length; k<innerlen; k++ ) {
item[d.COLUMNS[k].toLowerCase()] = d.DATA[i][k];
}
result.push(item);
}
return result;
}
列是问题是第二个对象中的fid,其id为60。
本地计算机返回此信息:
[Object { id="59", fid="5D", vid="15", more...}, Object { id="60", fid="00", vid="15", Object { id="61", fid="00", vid="07", more...}, more...}]
服务器返回:
[Object { id="59", fid="2K", vid="15", more...}, Object { id="60", fid=00, vid="15", Object { id="61", fid="04", vid="15", more...}, more...}]
Firebug中的错误消息:
我的本地计算机正在运行Windows 7,ACF CF 9,0,1,274733和IIS7。服务器正在运行Windows 2008 R2,ACF 9,0,2,282541和IIS7。我看到的唯一值得注意的差异是ColdFusion版本。非常感谢任何建议,谢谢。
答案 0 :(得分:2)
ColdFusion充斥着JSON错误。在9.0.2中修复了一些内容并不令我感到意外。也就是说,这看起来像你的错误:“SerializeJSON casts multiple zero value as number instead of string”。但根据bugbase的说法,这个bug在CF10.0.10之前没有修复。所以看起来奇怪的是它在CF9的两个不同的次要版本上表现不同?!
我努力在ColdFusion 9上使用serializeJson()
(请参阅我的博客标签“JSON”,了解它给我带来了多少冲突)。最后,我们认为CF的JSON支持不适用于CF9,并且已停止将其用于除最表面用途之外的任何其他用途。
我的建议是做同样的事情:简单地投降。
我对Google的GSON库有好运,如果这是一个选项。如果绝对不会序列化ColdFusion查询对象。