为什么在 Colfusion 中尝试使用 JavaScript 将 src 属性添加到 img 标签时出现错误?

Why am I getting an error when trying to add the src attribute to an img tag using JavaScript within Colfusion?

我正在使用 ColdFusion 连接到 Web 服务并从中执行方法。我将返回的 xml 字符串的内容存储到 ColdFusion 数组中,然后将 ColdFusion 数组转换为 JavaScript 数组,以便我可以填充 HTML 文档的内容。

我的问题出现在尝试将照片添加到名为“agent_photo_list”的无序列表时。特别是当我调用 .setAttribute 方法时。它似乎涉及 'src' 参数。当 JavaScript 代码不在 cfscript tagWriteOutput 方法中时,它按我预期的方式工作。我研究了这个问题,但找不到足够相似的参考。我仍然无法理解我的问题所在。我在下面包含了我的代码:

cfscript>
    WriteOutput('
    <script language = "JavaScript">
        var #ToScript(array, "jsArray")#
        var agent = jsArray[0];
        document.getElementById("output").innerHTML = agent.firstname + " " + agent.lastname;
        var imgurl = "_images/agentphoto.jpg";
        var node = document.createElement("LI");  
        var imgnode = (document.createElement("IMG"));
        imgnode.setAttribute('src', "imgurl");
        node.appendChild(imgnode);
        document.getElementById("agent_photo_list").appendChild(node);
    </script>
    ')
</cfscript>  

我正在使用 _images 文件夹中的 jpg 文件进行测试,稍后我会将其更改为 agent.photourl

我得到的错误如下:

Invalid CFML construct found on line 117 at column 35.ColdFusion was looking at the following text:<p>src</p><p>The CFML compiler was processing:<ul><li>An expression beginning with WriteOutput, on line 111, column 17.This message is usually caused by a problem in the expressions structure.<li>A script statement beginning with WriteOutput on line 111, column 17.<li>A cfscript tag beginning on line 102, column 10.</ul> The specific sequence of files included or processed is: C:\inetpub\wwwroot\webservice.cfm, line: 117

我很好奇为什么我的 JavaScript 在调用 setAttribute 方法之前在 cfscript 标记内起作用,以及为什么它在 cfscript 标记外起作用。

我将感谢您的见解。谢谢你。

您需要将 src 包装在 """ 中。另外,在 WriteOutput 闭包的末尾添加“;”。以下代码应该适合您。

<cfscript>
    WriteOutput('
    <script language = "JavaScript">
        var #ToScript(array, "jsArray")#
        var agent = jsArray[0];
        document.getElementById("output").innerHTML = agent.firstname + " " + agent.lastname;
        var imgurl = "_images/agentphoto.jpg";
        var node = document.createElement("LI");  
        var imgnode = (document.createElement("IMG"));
        imgnode.setAttribute("src", "imgurl");
        node.appendChild(imgnode);
        document.getElementById("agent_photo_list").appendChild(node);
    </script>
    ');
</cfscript>