如何强制Coldfusion cfc通过JSON输出数字数据作为字符串?

我正在使用jQuery.post()调用Coldfusion组件(cfc)。 我需要返回的数字的整数或字符串表示forms,以便在URL中使用。

{"PAGE":"My Page Title","ID":19382} or {"PAGE":"My Page Title","ID":"19382"} 

相反,我得到的是小数:

 {"PAGE":"My Page Title","ID":19382.0} 

需要更新以下HTML:

 My Page Title 

从概念上讲,我认为有多个答案:

1)我可以使用jQuery来获取小数点左边的数字。

2)我可以强制Coldfusion将数字作为字符串发送。

3)我可以生成整个链接服务器端,只需替换整个链接标记HTML(不是首选答案,但也许它是最好的)

有谁知道怎么做1或2? 3更好吗?

相关的Javascript :(未优化)

 $(".link").live('click', function () { var $linkID, serviceUrl; serviceUrl = "mycfc.cfc?method=getPage"; $linkID = $(this).attr("rel"); $.post(serviceUrl, { linkid: $linkID }, function (result) { $('#pagelink').val(result.TITLE); if (result.FMKEY.length) { // NEED the ID number WITHOUT the .0 at the end $('#pagelink').attr("href") = "page.cfm?id=" + result.ID; $('#pagelink').text(result.TITLE); } }, "json"); }); 

我的CFC:

        SELECT TOP 1 id, title FROM pages WHERE linkID =          

在JS中使用parseInt() 。 Kindda喜欢你的解决方案1,但这比你想象的要容易。

 $('#pagelink').attr("href") = "page.cfm?id=" + parseInt(result.ID, 10); 

CF默认将序列化为123的任何整数序列化为“123.0”,但通常在无类型语言(如JS或CF)中无关紧要。

SerializeJSON() (远程函数使用的)的默认行为无法被覆盖,但如果您愿意,可以使用www.riaforge.org上的第三方JSON库之一。

ps即使您浏览到“something.cfm?id = 123.0”, URL.id也只是CF中的数字值,EQ为123.尽管您的URL看起来URL.id ,如果它发布到CF,它仍然会工作。

这是一个已知的SerializeJSON()错误/function。 请参阅此答案以了解可能的解决方法

顺便说一句,因为你宁愿使用解决方案2)“我可以强迫Coldfusion将数字作为字符串发送”,例如当使用插件时需要像dataTable这样的字符串并且不想触及客户端代码…

只是试图强制表示如下数字的数字或字符串不起作用:

 Test["caseSensitiveName"] = "#numericString#"; 

但添加前导空格强制JSON字符串类型:

 Test["caseSensitiveName"] = " #numericString#"; 

黑客攻击破解,但可以派上用场。

2)我可以强制Coldfusion将数字作为字符串发送。

你在用id做数学吗? 可能不是。 就你的jquery而言,这是一个只包含数字而不是整数的字符串。 这样对待它。

从另一个角度来看,如果你也控制后端,你可以尝试使用javaCast(“int”,someIntegerThatColdFusionThinksIsAFloat)强制ColdFusion将数字序列化为整数。