我有这个代码作为一个工作正常的cffunction:
<cfcomponent extends="core.core">
<cffunction name="loadService" access="remote" returnformat="JSON">
<cfscript>
objResponse = '{"CONFIG":[["internal"],[ "success"]],"DATA":[["Message1"]]}';
</cfscript>
<cfreturn objResponse>
</cffunction>
</cfcomponent>
Run Code Online (Sandbox Code Playgroud)
我试图将它转换为完整的cfscript函数,如下所示:
component extends="core.core"{
remote JSON function loadService(){
objResponse = '{"CONFIG":[["internal"],[ "success"]],"DATA":[["Message1"]]}';
SerializeJSON(objResponse);
return objResponse;
}
}
Run Code Online (Sandbox Code Playgroud)
第一种方式返回JSON很好,我可以用jQuery处理它.第二个抛出错误"从loadService函数返回的值不是JSON类型."
我已经尝试过使用和不使用SerializeJSON,并且两种方式都会抛出该错误.我也尝试过它而不在函数语法中指定JSON.这不会引发错误,但它会围绕它包装wddxpacket信息.这是我没有指定JSON时的样子:
<wddxPacket version='1.0'><header/><data><string>{"CONFIG":[["internal"],[ "success"]],"DATA":[["Message1"]]}</string></data></wddxPacket>
Run Code Online (Sandbox Code Playgroud)
我坚持这个.任何帮助都会很棒.谢谢!
Sha*_*mes 13
CF9中正确的CFScript语法是:
remote any function loadService() returnformat="JSON" {
Run Code Online (Sandbox Code Playgroud)
从技术上讲,"JSON"不是函数的有效返回类型(请参阅此处查看所有返回类型),但是当您编写时:
remote JSON function
Run Code Online (Sandbox Code Playgroud)
......你基本上是这么说的.
请注意,在基于标记的cffunction调用中,您没有指定returnType ...所以请默认猜测它是什么?(提示:任何).
将returnType和returnFormat混合起来很容易.上面有一个简单的调整,你应该好好去.
完整代码
component extends="core.core" {
remote any function loadService() returnFormat="JSON" {
objResponse = '{"CONFIG":[["internal"],[ "success"]],"DATA":[["Message1"]]}';
SerializeJSON(objResponse);
return objResponse;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5761 次 |
| 最近记录: |