我正在使用jQuery.post()调用Coldfusion组件(cfc)。我需要返回的数字的整数或字符串表示形式,以用于URL。
{"PAGE":"My Page Title","ID":19382} or {"PAGE":"My Page Title","ID":"19382"}
相反,我得到的是一个小数:
{"PAGE":"My Page Title","ID":19382.0}
需要更新以下HTML:
<a href="page.cfm?id=19382" id="pagelink">My Page Title</a>
从概念上讲,我想有多个答案:
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:
<component output="no"> <cfsetting showdebugoutput="no"> <cffunction name="getPage" access="remote" returnFormat="JSON" output="no" hint="Looks up a Page Title and ID"> <cfargument name="linkID" type="string" required="yes"> <cfset var page = queryNew("id,title")> <cfset var result = structNew()> <cfquery datasource="myDatasource" name="page"> SELECT TOP 1 id, title FROM pages WHERE linkID = <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.linkID#"> </cfquery> <cfif page.recordcount> <cfset result.id = page.id> <cfset result.title = page.title> </cfif> <cfreturn result> </cffunction> </component>
parseInt()在JS中使用。Kindda喜欢您的解决方案1,但这比您想象的要容易。
parseInt()
$('#pagelink').attr("href") = "page.cfm?id=" + parseInt(result.ID, 10);
CF默认将123之类的整数序列化为“ 123.0”,但通常对于无类型语言(如JS或CF)都没有关系。
SerializeJSON()(远程功能使用的默认行为)不能被覆盖,但是如果您愿意,可以使用www.riaforge.org的第三方JSON库之一
SerializeJSON()
ps即使浏览到“ something.cfm?id = 123.0”,URL.idCF中的数字也只是EQ到123的一个数值。尽管您的URL看起来有点怪异,但如果将其发布到CF,它仍然可以使用。
URL.id