使用 javascript 设置 Coldfusion 变量以在同一页面上的 replace() 中使用

Set Coldfusion Variable with javascript for use in replace() on same page?

本文关键字:replace 一页 Coldfusion 设置 javascript 变量 使用      更新时间:2023-09-26

在同一页面上输入的表单数据通过 json 发布到 CFC 以存储在数据库中后,我正在尝试设置一个 coldfusion 变量。

将弹出一个模式,其中包含向客户端发送欢迎电子邮件的选项。该电子邮件的内容是预先撰写并存储在数据库中的。我们拉取它,然后在字符串上运行 replace(( 几次,以插入诸如刚刚在上一个表单上设置的客户端特定登录名和密码之类的内容。

所以我正在尝试将登录名和密码变量设置为 coldfusion 变量,以便它们可以在 rereplace(( 函数中用于将它们添加到电子邮件字符串中,以便客户端将收到它们的凭据。

<tr>
    <td>
    <cfparam name="ClientLogin" default="">
    <cfinput type="Text" id="ClientLogin" name="ClientLogin" value="#ClientLogin#" required="Yes" message="Client Login is required" maxlength="60" class="inputText430">
    </td>
</tr> 
<tr>
    <td>
    <cfparam name="ClientPassword" default="">
    <cfinput type="Text" name="ClientPassword" value="#ClientPassword#" required="Yes" message="Client Password is required" maxlength="15" class="inputText430">
    </td>
</tr> 

ClientEmailNotes是从查询中获取的,我需要从表单输入中设置ClientLogin和ClientPassword coldfusion变量。

莫代尔的一部分:

<cfset ClientEmailNotesStr = #clientemailDefault.ClientEmailNotes#>
<cfset ClientEmailNotesStr = Replace(ClientEmailNotesStr,"CLIENT_LOGIN","#ClientLogin#","ALL")>
<cfset ClientEmailNotesStr = Replace(ClientEmailNotesStr,"CLIENT_PASSWORD","#ClientPassword#","ALL")>
<cfset ClientEmailNotesStr = Replace(ClientEmailNotesStr,"COMPANY_NAME","#companyname.Company#","ALL")>
<textarea name="Message" cols="90" class="textArea430" wrap="virtual" style="width:420px; height:93px;">
#ClientEmailNotesStr#
</textarea>

如果我需要详细说明,请告诉我。我注意到有时在看了一个问题后,我已经内化了这个问题,以至于我可能没有很好地描述它。

提前谢谢你,

史蒂文

您想要

的是a(从表单中获取表单字段值,b(将它们应用于模态中的消息。模态代码是否已经是 DOM 的一部分?如果是这种情况,您将使用 JavaScript 来提取字段的值并替换文本区域文本,而不是使用 CF,因为它已经是 DOM 的一部分(此时没有服务器请求(。这相当简单,尽管(如前所述(,仍然不是很安全,除非您的模态邮政编码是通过安全套接字。(无论如何,您通常不会通过电子邮件发送纯文本un/pw,但这是另一个讨论(。

我想

我明白了。

我知道 CF 是在服务器上处理的,而 JS 是客户端,但是文件中有一些代码分散了我的注意力。因此,我需要提醒它,以便从不同的角度点击。所以谢谢你。

CFC提到,自从另一个人匆忙通过它以来,它一直是有问题的。每周都会产生不同的问题。

就处理纯文本密码而言,您是绝对正确的。这是一个过时的 s#!@ 软件,我正准备重写它,所以我必须选择我的战斗来修复什么,还有很多其他问题需要在它上线时解决,直到我开始在蛋糕中重建。

我所做的是使用该组件,根据是否保存了电子邮件内容来运行 replace((,然后将其附加到模态中电子邮件的表单页面上的文本区域。

返回要追加的数据的 CFC 页面:

<cffunction name="getEmailMessage" access="remote" returnformat="json">
<cfargument name="ClientLogin" default="">
<cfargument name="ClientPassword" default="">
<cfquery name="companyname" datasource="#arguments.datasource#">
SELECT STUFF
</cfquery>
<cfquery name="clientemailDefault" datasource="#arguments.datasource#">
SELECT STUFF
</cfquery>
<cfif clientemailDefault.ClientEmailNotes eq ''>
<cfset content.message='Hard Coded Text'>
<cfelse>
<cfset ClientEmailNotesStr = #clientemailDefault.ClientEmailNotes#>
<cfset ClientEmailNotesStr = REReplace(ClientEmailNotesStr,"CLIENT_LOGIN","#arguments.ClientLogin#","ALL")>
<cfset ClientEmailNotesStr = REReplace(ClientEmailNotesStr,"CLIENT_PASSWORD","#arguments.ClientPassword#","ALL")>
<cfset ClientEmailNotesStr = REReplace(ClientEmailNotesStr,"COMPANY_NAME","#companyname.Company#","ALL")>

<cfset content.message = #ClientEmailNotesStr# >
</cfif>
<cfreturn content>
</cffunction>

感谢大家的投入。