2010-11-11 19 views
0

这里是处理:我发送一个ajax请求到一个coldfusion函数,然后调用同一个组件内的另一个函数。这里有两个函数:通过ajax从另一个函数调用一个coldfusion函数来渲染一个错误

<!--- test---> 
<cffunction name="deleteMission" access="public" output="No" returntype="struct"> 
<cfscript> 
    var returnData = structNew(); 
    structAppend(returnData, getTest()); 
    returnData.test2 = "test2"; 
</cfscript> 
<cfreturn returnData> 
</cffunction> 

<!--- test2 ---> 
<cffunction name="getTest" access="public" output="No" returntype="struct"> 
<cfscript> 
    var returnData = structNew(); 
returnData.testing = "TEST"; 
</cfscript> 
<cfreturn returnData> 
</cffunction> 

很简单,在这个例子中只返回2个结构键。如果我经常调用方法测试()(即通过coldfusion进行页面加载),我会得到预期结果。但是,如果我通过AJAX调用方法test(),则会收到错误“变量getTest未定义”。如果我删除对getTest()的调用,那么我会收到单个结构关键字。任何人都知道发生了什么事?我有一种感觉,这是我忽略的一些简单的东西,但在这一点上我需要更多的眼球......我真的在这个问题上挠头。谢谢!

+0

“如果我删除调用getTest(),我收到了一个关键的结构早在预料。”我不明白,你的ajax调用URL是什么?发布您的ajax脚本! – Henry 2010-11-11 03:30:12

+0

方法测试()?在你的问题中只有deleteMission()和getTest()。 – Henry 2010-11-11 03:31:33

回答

1

如果您通过AJAX访问组件,则cffunctionaccess属性应设置为remote。例如。

<cffunction name="deleteMission" access="remote" output="No" returntype="struct"> 
-1

将您的getTest更改为access =“private”。 此外,有时StructAppend方法不会将参数作为“函数调用”。因此,首先将该值存入变量,然后将该变量发送给deleteMission。

这样的事情...

var inpData = getTest(); 
structAppend(returnData, inpData);