我是ColdFusion的新手,我在将json数据渲染到jquery数据表时面临一个问题。下面是我的数据表
的ajaxSource页面getData.cfm
<cfcontent type="application/x-javascript">
<cfset partyId = 100001 />
<cfstoredproc procedure="proc_get_uploaded_details" datasource="#request.dataSource#">
<cfprocparam value="#partyId#" cfsqltype="CF_SQL_BIGINT">
<cfprocresult name="getUploadDtls">
</cfstoredproc>
<cfset data = [] />
<cfoutput query="getUploadDtls">
<cfif user_session_id eq Session.SessionID>
<cfset deleteLink = "<span class='delete-link link'>Delete</span>" />
<cfelse>
<cfset deleteLink = "">
</cfif>
<cfset obj = {
"ID" = id,
"ORG_NAME" = original_name,
"GEN_NAME" = generated_name,
"TYPE" = type,
"PATH" = path,
"URL" = "<a href='renderpdf.cfm?path=#path#&name=#original_name#' target='_blank'>Preview</a>",
"DELETE" = deleteLink
} />
<cfset arrayAppend(data, obj) />
</cfoutput>
<cfprocessingdirective suppresswhitespace="Yes">
<cfoutput>
{"aaData":
#serializeJSON(data)#
}
</cfoutput>
</cfprocessingdirective>
<cfsetting enablecfoutputonly="No" showdebugoutput="No">
以下是此页面的json结果
{"aaData"://
[{"GEN_NAME":"pdf_60.pdf","PATH":"C:\\NAM\\WebUploads\\100001\\Medical Reports\\pdf_60.pdf","DELETE":"<span class='delete-link link'>Delete</span>","ORG_NAME":"pdf.pdf","ID":33,"TYPE":"Medical Reports","URL":"<a href='renderpdf.cfm?path=C:\\NAM\\WebUploads\\100001\\Medical Reports\\pdf_60.pdf&name=pdf.pdf' target='_blank'>Preview<\/a>"}]
}
在上面的结果中,两个额外的正斜杠从一些地方追加,就在{"aaData":
之后,还有一个额外的反斜杠在锚标记<\/a>
的关闭时附加了我不知道从这包括在哪里。
此页面在ColdFusion 10中完美运行,问题出在CF 9服务器上。
这是ColdFusion 10中的json结果
{"aaData":
[{"GEN_NAME":"pdf_60.pdf","PATH":"C:\\NAM\\WebUploads\\100001\\Medical Reports\\pdf_60.pdf","DELETE":"<span class='delete-link link'>Delete</span>","ORG_NAME":"pdf.pdf","ID":33,"TYPE":"Medical Reports","URL":"<a href='renderpdf.cfm?path=C:\\NAM\\WebUploads\\100001\\Medical Reports\\pdf_60.pdf&name=pdf.pdf' target='_blank'>Preview</a>"}]
}
这里没有额外的斜线。为什么会这样?
答案 0 :(得分:3)
从评论中推广
ColdFusion管理员有一个安全设置, Prefix serialized JSON with:。默认情况下,它会设置为两个正斜杠,就像您看到//
一样。这有助于保护代码免受某些JavaScript漏洞的影响。您可以禁用该设置,但需要研究这样做的安全后果。或者,您可以在开始执行任何操作之前从返回的JSON中删除前两个字符。 See this reference。我不建议禁用该设置。
您可以执行以下操作来删除这些初始字符:
right(data,stringlen(data)-2)
这只是一种方法。当然还有其他的。