gpt4 book ai didi

javascript - 如何在 ColdFusion 中使用标签 cfwddx

转载 作者:行者123 更新时间:2023-12-02 18:47:53 25 4
gpt4 key购买 nike

我想将 ColdFusion 结构发送到 Javascript。在考虑如何做到这一点时,我发现了 cfwddx 标签。这似乎让我走到了一半。我创建了一个测试程序

<head>
<script type = "text/javascript" src = "frag3.js"> </script>
</head>
<body>

<cfset str = StructNew()>
<cfset str['betty'] = 1>
<cfset str['nancy'] = 2>
<cfdump var = "#str#">

<cfwddx action="CFML2JS"
input="#str#"
toplevelvariable="xyz"
output = "genstr">

<cfoutput>
<script type = "text/Javascript">
test('betty')
function test (arg) {
alert("got to test");
#genstr#
alert ("xyz " + xyz[arg]);
}
nothing()
</script>
</cfoutput>

cfdump 给出了正确答案

output of cfdump

当我查看 #genstr# 的输出时,它包含正确的 JavaScript 代码:

xyz = new Object(); xyz["betty"] = "1"; xyz["nancy"] = "2"; 

当我运行如上所示的内联代码时,警报给出了正确的答案。当我调用位于 frag3.js 上的“nothing()”函数时,警报显示它已运行,因此 src 语句正在运行。

但是,当我将函数 test(arg) 本身移动到 frag3.js 时,它不会运行。

谁能告诉我如何让“测试”作为外部函数工作,而不是仅仅内联在我的 ColdFusion 代码中?顺便说一句,我还没有学过jquery,所以jquery的答案不会有太大帮助;我需要基本的 JavaScript。

最佳答案

不要将变量位(我们称之为“初始化”“配置”)写入网站的源代码(或更糟糕的是,写入源代码)静态 JS 文件的一部分),我推荐以下内容。

创建一个具有远程可调用方法的组件,该方法返回包含所有配置的结构。现在,您可以从服务器上的 ColdFusion 代码(您将在其中接收结构)调用该方法,并通过 Ajax 从客户端上的 JavaScript 代码(您将在其中接收 JSON)调用该方法。

/** Config.cfc (or call it something similar)
*
*/

component {
remote struct function getConfig() returnformat="JSON" {
var str = StructNew();
str['betty'] = 1;
str['nancy'] = 2;
return str;
}
}

你的main.cfm(为了简单起见,我使用了 jQuery 来处理 Ajax 请求):

<html>
<head>
<script type="text/javascript" src="frag3.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
</head>
<body>
<h1>Config, as seen by the server</h1>
<cfinvoke component="Config" method="getConfig" returnvariable="cfg">
<cfdump var="#cfg#">

<h1>Config, as seen by the client</h1>
<pre id="cfgDump"></pre>

<script type="text/javascript">
$(function () {
$.get("Config.cfc?method=getConfig").done(function (cfg) {
// cfg already is a regular JS object at this point
// convert to JSON again for display purposes
$("#cfgDump").text( JSON.serialize(cfg, null, 2) );
});
});
</script>
</body>
</html>

干净简单。

关于javascript - 如何在 ColdFusion 中使用标签 cfwddx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27761290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com