How do I force a Coldfusion cfc to output numeric data over JSON as a string?

Posted by Dan Sorensen on Stack Overflow See other posts from Stack Overflow or by Dan Sorensen
Published on 2010-03-19T18:36:38Z Indexed on 2010/03/19 18:41 UTC
Read the original article Hit count: 204

Filed under:
|
|
|
|

I'm calling a Coldfusion component (cfc) using jQuery.post(). I need an integer or string representation of the number returned for use in a URL.

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

Instead what I get back is a decimal:

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

Needed to update the following HTML:

<a href="page.cfm?id=19382" id="pagelink">My Page Title</a>

Conceptually, I suppose there are multiple answers:

1) I could use jQuery to grab the number left of the decimal point.

2) I could force Coldfusion to send the number as a string.

3) I could generate the whole link server side and just replace the whole link tag HTML (not the preferred answer, but maybe it is the best)

Does anyone know how to do 1 or 2? Is 3 better?

Relevant Javascript: (Not optimized)

$(".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");
});

My 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>

© Stack Overflow or respective owner

Related posts about coldfusion

Related posts about jQuery