2

我正在 cfm 文件的脚本标签中构建 JSON 字符串。我想找到一种方法将此 JSON 字符串转换为 cfoutput,以便页面可以显示 JSON。

我目前只是document.write()在浏览器中检索 JSON 但不会通过 POST 请求返回任何内容的 json。我尝试过使用 toScript() Coldfusion 函数,但我认为这与我想要的相反(当我想将 js var 放入 cf 时,将 cf var 放入 js)。

我目前正在这样做

<cfoutput>
    <script type = "text/javascript"> 
        var someJSON = "{\"some\": \"data\"}";
        document.write(JSON.stringify(someJSON));
    </script>
</cfoutput>

我仍然在处理冷融合,如果这看起来很陈旧,我很抱歉。我想改为传递someJSON给一个coldfusion变量,这样我就可以cfoutput标签,这样我就可以得到一个对这个特定端点的POST请求的响应,因为目前我没有得到任何响应。

4

2 回答 2

2

要将字符串从 ColdFusion 中取出并放入 Javascript,您需要执行以下操作:

<cfset cfdata = {"some": "data"}>


<cfoutput>
<script type = "text/javascript"> 
    var someJSON = #serializeJSON(cfdata)#;
    document.write(JSON.stringify(someJSON));
</script>
</cfoutput>

结果

在此处输入图像描述

见:https ://cffiddle.org/app/file?filepath=f9d44f3a-5711-456e-b25a-bf31fead1fa8/6677fc2a-f41b-47d7-b11a-352575f95738/4e1ecc15-ac98-450f-a7fe-b28cf395b012.cfm

于 2019-08-06T20:37:29.963 回答
0

您有一些form.cfm正在向data.cfm. 该data文件应返回文件JSON中的 JavaScript form

data.cfm文件基本上需要这样做:

<cfscript>
data = {
    a: 1,
    b: 2,
    c: 3
};

cfcontent(type="application/json; charset=UTF-8")
writeOutput(serializeJSON(data))
</cfscript>

cfcontent函数告诉浏览器返回的内容是 JSON。没有它,它只是一个字符串,你必须用 JavaScript 做更多的事情来理解这个字符串。

返回的数据看起来像

{"A":1,"B":2,"C":3}

因为 ColdFusion 以大写形式存储结构键。为了使数据以小写键的形式返回,您可以执行以下任一操作

data = {};
data["a"] = 1;
data["b"] = 2;
data["c"] = 3;

或者

data = {
    "a": 1,
    "b": 2,
    "c": 3
};

然后它将返回带有小写键的 JSON。

{"a":1,"b":2,"c":3}
于 2019-08-07T16:17:31.850 回答