小编ric*_*ckp的帖子

将会话从CFScript转换为ColdFusion标记语法

应用程序: JavaScript函数侦听表单元素的更改(输入和选择),并将数据发布到将它们分配给Session结构的CFC方法.返回结构,使表单数据可用于会话的生命周期.该应用程序根据Raymond Camden使用服务器或会话存储的代码进行调整,以保留表单值.

问题:原始CFC代码是用CFScript编写的.因为我们在ColdFusion 8上,所以在调用方法时会出错.因此,我将该方法转换为ColdFusion标记语法并停止获取该错误.在Chrome的开发工具中,每当我在表单元素中输入内容时,我都会看到通过JSON对象传递到CFC的数据.所以我知道JavaScript函数正在运行.即使我没有收到任何返回错误,也有一些行为让我相信我的翻译不正确.例如,会话结构的转储仅显示输入的最后一个输入元素,而不是所有输入元素(如Ray的演示中的情况).

这是原始的CFScript版本,然后是我的标签翻译.除了关于我的翻译错误的任何评论之外,我很乐意对这一行进行解释<cfset s.name = [s[name]] />,尤其是[s[name]]构造,因为我无法清楚地说明那里发生的事情.谢谢.

脚本语法:

component {
    remote void function preserveSession(string awardData) {
        if(!isJSON(arguments.awardData)) return;
        arguments.awardData = deserializeJSON(arguments.awardData);

        //convert the array into a name based struct
        var s = {};
        for(var i=1; i<=arrayLen(arguments.awardData); i++) {
            var name = arguments.awardData[i].name;
            if(!structKeyExists(s, name)) {
                s[name] = arguments.awardData[i].value;    
            } else {
                //convert into an array
                if(!isArray(s[name])) {
                    s[name] = [s[name]];
                }
                arrayAppend(s[name], arguments.awardData[i].value);
            }    
        }
        session.awardFormData = s; …
Run Code Online (Sandbox Code Playgroud)

coldfusion coldfusion-8 cfml

5
推荐指数
1
解决办法
790
查看次数

标签 统计

cfml ×1

coldfusion ×1

coldfusion-8 ×1