在ColdFusion中创建作为按钮的结构
首先,我真的不知道如何命名这个问题,所以我道歉,如果它是模糊的。我正在尝试使用ColdFusion创建一个购物清单,但遇到了一些障碍。我希望在已创建的项目旁边显示“删除”按钮。我几乎所有的东西都在工作,但我对ColdFusion中的结构理解不够,无法理解我做错了什么。它与React.js中的组件类似吗?我遇到一个问题,说变量按钮没有定义。我假设这是因为structkeyExists无法识别单个按钮。为什么它只适用于表单而不适用于按钮 这是我的密码:在ColdFusion中创建作为按钮的结构,coldfusion,structure,Coldfusion,Structure,首先,我真的不知道如何命名这个问题,所以我道歉,如果它是模糊的。我正在尝试使用ColdFusion创建一个购物清单,但遇到了一些障碍。我希望在已创建的项目旁边显示“删除”按钮。我几乎所有的东西都在工作,但我对ColdFusion中的结构理解不够,无法理解我做错了什么。它与React.js中的组件类似吗?我遇到一个问题,说变量按钮没有定义。我假设这是因为structkeyExists无法识别单个按钮。为什么它只适用于表单而不适用于按钮 这是我的密码: <cfif structKeyExist
<cfif structKeyExists(form, "submitButt")>
<cfquery datasource="ESC-ADD-TECH">
INSERT INTO Main(itemDesc) VALUES('#itemDesc#')
</cfquery>
</cfif>
<cfif structKeyExists(button, "delete_butt")>
<cfquery datasource="ESC-ADD-TECH">
INSERT INTO Main(itemDesc) VALUES('#itemDesc#')
</cfquery>
</cfif>
<cfquery datasource="ESC-ADD-TECH" name="items">
DELETE FROM Main
WHERE itemDesc = '#itemDesc#'
</cfquery>
<body>
<div id="myDIV" class="header">
<h2>My Shopping List</h2>
<form method="POST">
<input type="text" name="itemDesc" placeholder="Title...">
<input name="submitButt" type="submit" class="addBtn">
</form>
</div>
<cfoutput query="items">
<li>#items.itemDesc# <button class="delete" name="delete_butt">x</button></li>
</cfoutput>
</body>
有没有一种方法可以用一个结构来完成我在这里要做的事情?我最好在javascript中创建按钮,并尝试创建一个布尔语句结构,然后让javascript重写该值?有点像是在黑暗中拍摄,但我会感谢任何人的帮助
谢谢大家 所以提交表单时不会出现按钮结构。 首先要记住的是,ColdFusion结构只是一个键/值对的集合,类似于JavaScript对象,除非设置了值,否则将是未定义的 在您的情况下,表单结构的存在是因为您正在使用输入[type=submit]将页面提交回自身。对于ColdFusion页面,它将创建一个表单结构,其中包含提交表单中每个命名输入的键,其值从这些元素的值属性中提取 如果您试图使用表单结构来处理删除项目,最好使用单选按钮/复选框来选择要删除的项目,并使用提交按钮的值属性设置要执行的操作 以您的代码为例:
<cfparam name="form.action" type="string" default="none">
<cfswitch expression="#form.action#">
<cfcase value="insert">
<!---Your insert query goes here--->
</cfcase>
<cfcase value="delete">
<!---Your delete query goes here--->
</cfcase>
<cfdefaultcase></cfdefaultcase>
</cfswitch>
<!---Your select query--->
<body>
<form method="post" action="#">
<div id="myDIV" class="header">
<h2>My Shopping List</h2>
<input type="text" name="itemDesc" placeholder="Title...">
<button type="submit" name="action" value="insert">Submit</button>
</div>
<ul>
<cfoutput query="items">
<li>#items.itemDesc#
<input type="radio" name="delDesc" value="#items.itemDesc#"/>
</li>
</cfoutput>
</ul>
<button type="submit" name="action" value="delete">Delete</button>
</form>
</body>
在这种情况下,插入值时将使用form.itemDesc,删除项时将使用form.delDesc。我想知道是否可以用您应该使用的表单标记来包装按钮,而不是将变量转储到cfquery块中。这为SQL注入打开了大门,特别是当这些变量没有限定作用域时。ColdFusion有一个用于使用scopes@Rain1超级嫉妒你有一个非常棒的用户名。雨是最好的用户名。非常感谢你提供的信息。这只是为了测试,但我很感激你的建议。我会把它作为我笔记的一部分。再次感谢!谢谢,那是我的真名。或者,当学习ColdFusion时,cfscript等价物是非常宝贵的。开发时,将所有内容转储到屏幕并进行检查。在这种情况下,你可以看看发生了什么。ColdFusion是一种不一致的语言,文档稀少,规则怪异。不要相信它,看它在做什么同意cfqueryparam。好的代码从不在查询中使用原始客户机值。哇!回答得很好。谢谢你,这是非常有用的信息!你有没有关于ColdFusion的文档可以帮助我避免问一些基本的问题?另外,使用switch-case语句而不是if-else有什么真正的好处吗?纯粹出于好奇。不幸的是,没有,在Adobe网站之外很难找到好的ColdFusion文档。我对这门语言的了解大多来自于反复试验:与其他人所说的话相呼应,cfdump对于了解页面中发生了什么是非常宝贵的-编辑-尽可能使用switch vs if elseif语句;在这种情况下,这并没有多大区别,如果有的话,这实际上是一个个人偏好。