使用 cfscript 函数的 JSON 响应

2023-12-28

我有这个代码作为 cffunction 工作正常:

<cfcomponent extends="core.core">

<cffunction name="loadService" access="remote" returnformat="JSON">

    <cfscript>

        objResponse = '{"CONFIG":[["internal"],[ "success"]],"DATA":[["Message1"]]}';

    </cfscript>

<cfreturn objResponse>  

</cffunction>   

</cfcomponent>

我正在尝试将其转换为完整的 cfscript 函数,如下所示:

component extends="core.core"{

remote JSON function loadService(){

    objResponse = '{"CONFIG":[["internal"],[ "success"]],"DATA":[["Message1"]]}';

    SerializeJSON(objResponse);

    return objResponse; 
}

}

第一种方法返回 JSON 很好,我可以用 jQuery 处理它。第二个抛出错误“loadService 函数返回的值不是 JSON 类型。”

我已经尝试过使用和不使用 SerializeJSON,两种方法都会抛出该错误。我也尝试过,没有在函数语法中指定 JSON。这不会引发错误,但它确实包裹了 wddxpacket 信息。当我不指定 JSON 时,它看起来是这样的:

<wddxPacket version='1.0'><header/><data><string>{"CONFIG":[["internal"],[ "success"]],"DATA":[["Message1"]]}</string></data></wddxPacket>

我被困在这个问题上。任何帮助都会很棒。谢谢!


CF9 中正确的 CFScript 语法是:

remote any function loadService() returnformat="JSON" {

从技术上讲,“JSON”不是函数的有效返回类型(请参阅此处了解所有返回类型 http://cfquickdocs.com/cf9/#cffunction),但是当你写:

remote JSON function

……你基本上就是这么说的。

请注意,在基于标记的 cffunction 调用中,您没有指定 returnType...那么猜猜默认情况下它是什么? (提示:任何)。

混合 returnType 和 returnFormat 很容易。通过上面的简单调整,您就可以开始了。

完整代码

component extends="core.core" {

remote any function loadService() returnFormat="JSON" {

    objResponse = '{"CONFIG":[["internal"],[ "success"]],"DATA":[["Message1"]]}';

    SerializeJSON(objResponse);

    return objResponse; 
}

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 cfscript 函数的 JSON 响应 的相关文章

随机推荐