我有一个非常简单的Ajax-Request。它只是从数据库请求一些数据。问题是我总是收到JSON.parse错误(第一行,第一列)。 Coldfusion函数输出的JSON有效且正确。
当我仅将代码复制到.cfc文件时,一切正常。为什么会这样?
冷融合:
<cffunction name="getAllDatatypes" access="remote" returntype="query" returnformat="json">
<cfquery name="getAllDatatypes" datasource="#DSN#">
SELECT
id_datatype,
name
FROM
datatype
</cfquery>
<cfreturn getAllDatatypes>
</cffunction>
jQuery:
function getAllDatatypes() {
$.ajax({
url: "getData.cfm",
type: "post",
dataType: "json",
data: {method: "getAllDatatypes"}
}).done(function(result) {
console.log(result);
}).fail(function(error1, error2, error3) {
console.log(error1 + " " + error2 + " " + error3);
});
}
答案 0 :(得分:4)
在remote
文件中创建.cfc
函数时,CFC路径开始像Web服务那样运行。像下面这样拨打电话时,
http://localhost/components/testcomp.cfc?method=getAllDatatypes
ColdFusion知道您正在尝试在getAllDatatypes
组件中调用远程函数components/testcomp.cfc
,并且如果找到了远程函数getAllDatatypes
并以{{ 1}},plaintext
或xml
。
另一方面。对json
文件的任何调用都没有这种情况。即使您已在文件中创建了函数,ColdFusion也不希望将远程方法调用到.cfm
文件中。
PS:使用.cfm
或var
范围初始化函数中的变量始终是个好主意。