我正在使用ColdFusion连接并从Web服务执行方法。我将返回的xml字符串的内容存储到ColdFusion数组中,然后将ColdFusion数组转换为JavaScript数组,以便我可以填充HTML文档的内容。
尝试将照片添加到名为" agent_photo_list
"的无序列表时出现问题。特别是当我调用.setAttribute
方法时。它似乎涉及'src'
参数。当JavaScript代码不在cfscript tag
和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>
我正在使用位于_images
文件夹中的jpg文件进行测试,稍后我会将其更改为agent.photourl
。
我得到的错误如下:
无效的CFML构造在第55行的第35列找到.ColdFusion是 查看以下文字:&lt; p&gt; src&lt; / p&gt;&lt; p&gt; CFML 编译器正在处理:&lt; ul&gt;&lt; li&gt;表达式开头 使用WriteOutput,在第111行,第17列。通常是这条消息 由表达式结构中的问题引起的。&lt; li&gt;脚本 以第111行的列上的WriteOutput开头的语句 17.&lt; li&gt;从第102行第10列开始的cfscript标签。&lt; / ul&gt;包含或处理的特定文件序列为:C:\ inetpub \ wwwroot \ webservice.cfm,line:117
我很好奇为什么我的JavaScript在cfscript
标记内有效,直到调用setAttribute
方法以及为什么它在cfscript
标记之外起作用。
我将非常感谢您的见解。谢谢。
答案 0 :(得分:3)
您需要在“”中包含 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>