Asp classic 表单提交成功消息显示

Asp classic 表单提交成功消息显示,asp-classic,Asp Classic,我正在创建一个简单的表单,它接受一个参考代码和电子邮件地址,存储电子邮件地址,然后发送一封电子邮件 表单中有一些脚本,用于检查表中是否已经存在电子邮件地址,还可以查找另一个表以检查他们输入的引用代码是否存在于另一个表中 在我的页面中,我有一条错误消息,显示代码是否不存在和/或电子邮件地址是否存在。但是,如果表单提交成功,那么我希望表单替换为一条感谢消息 这是我页面中的代码 <% sys_message = "" If (Request.Form("form_submit") <&

我正在创建一个简单的表单,它接受一个参考代码和电子邮件地址,存储电子邮件地址,然后发送一封电子邮件

表单中有一些脚本,用于检查表中是否已经存在电子邮件地址,还可以查找另一个表以检查他们输入的引用代码是否存在于另一个表中

在我的页面中,我有一条错误消息,显示代码是否不存在和/或电子邮件地址是否存在。但是,如果表单提交成功,那么我希望表单替换为一条感谢消息

这是我页面中的代码

<% 
sys_message = ""

If (Request.Form("form_submit") <> "") Then
    %><!--#include file="doreferral.asp"--><%
End If %>

[...]

<% If(sys_message <> "") Then
    Response.Write(sys_message)
End If %>
<form action="referral.asp#msg" name="frmRegister" id="form_referral" method="post">
    <input name="fldCode" type="text" class="quick-referral-input" id="fldCode" value="Enter agent code" onblur="if(this.value=='') 
    this.value='Enter agent code';" onfocus="if(this.value=='Enter agent code') this.value='';"/>
    <input name="fldEmail" type="text" class="quick-referral-input" id="fldEmail" value="Enter email address" onblur="if(this.value=='') 
    this.value='Enter email address';" onfocus="if(this.value=='Enter email address') this.value='';"/>
    <input type="hidden" name="form_submit" value="submitted" />
    <input type="image" class="quick-referral-submit" src="images/homepage/quick-referral-submit.gif" value="submit" alt="Submit button" 
    onClick="checkSignup();">
</form>

[...]
表单使用doreferral.asp页面进行插入/检查

<%
    fldCode         = replace(request.Form("fldCode"),"'","")
    fldEmail        = replace(request.Form("fldEmail"),"'","")

    '' //Check the submitted email against existing ones in the database
    set conn = server.CreateObject("ADODB.connection")
    conn.open(application("DATABASE"))
    qs = "SELECT COUNT(ReferredEmail) AS 'Count' FROM TenantReferral WHERE ReferredEmail = '" & fldEmail & "'"
    set rs = conn.Execute(qs)

    countEmail = rs("Count")

    set rs = nothing
    conn.close
    set conn = nothing

    If(countEmail >= 1) Then
        sys_message = sys_message & "<p class='referral-thanks'>This email address has already been referred.</p>"
    End If  

    ''//Check the submitted code against existing ones in the database
    set conn = server.CreateObject("ADODB.connection")
    conn.open(application("DATABASE"))
    qs = "SELECT COUNT(AgentReferralCode) AS 'CountCodes' FROM Customers WHERE AgentReferralCode = '" & fldCode & "'"
    set rs = conn.Execute(qs)

    CountCode = rs("CountCodes")

    set rs = nothing
    conn.close
    set conn = nothing

    If(CountCode < 1) Then
        sys_message = sys_message & "<p class='referral-thanks'>The referral code does not exist.</p>"
    End If  

    '' //Only Process the SQL if there is no sys_message
    If(sys_message = "") Then

        SQLfields = SQLfields & "ReferredCode, "
        SQLvalues = SQLvalues & "'"& Trim(fldCode) &"', "
        SQLfields = SQLfields & "ReferredEmail"
        SQLvalues = SQLvalues & "'"& Trim(fldEmail) &"'"

        SQL = SQL & "INSERT into TenantReferral ("& SQLfields &") VALUES ("& SQLvalues &")"
        response.Write(SQL)

        set conn = server.CreateObject("ADODB.connection")
        conn.open application("DATABASE")
        SET rs = conn.execute(SQL)

        ''//Email code goes here

        response.Redirect("referral.asp")

    End If
%>
=1)然后
sys\u message=sys\u message&“

此电子邮件地址已被引用。

” 如果结束 ''//对照数据库中的现有代码检查提交的代码 set conn=server.CreateObject(“ADODB.connection”) conn.open(应用程序(“数据库”)) qs=“从AgentReferralCode='”和fldCode&“”的客户中选择COUNT(AgentReferralCode)作为“CountCodes” 设置rs=conn.Execute(qs) CountCode=rs(“CountCodes”) 设置rs=无 康涅狄格州 设置连接=无 如果(计数代码<1),则 sys\u message=sys\u message&“

引用代码不存在。

” 如果结束 “”//仅在没有系统消息时处理SQL 如果(sys_message=“”),则 SQLfields=SQLfields&“referedCode” SQLvalues=SQLvalues&“'”和Trim(fldCode)&“,” SQLfields=SQLfields&“referedemail” SQLvalues=SQLvalues&“'”和Trim(fldEmail)&“” SQL=SQL&“插入到TenantReferral(&SQLfields&”)值(&SQLvalues&”)中 response.Write(SQL) set conn=server.CreateObject(“ADODB.connection”) conn.open应用程序(“数据库”) 设置rs=conn.execute(SQL) ''//电子邮件代码在这里 response.Redirect(“reference.asp”) 如果结束 %>
我想知道是否有人可以发现我可以更改/添加的内容,以显示感谢信息,但不显示表单。我尝试了一些关于表单的If语句,但没有成功


谢谢。

做起来很简单,只需稍微改变一下逻辑即可

逻辑可以有点像这样:

  • 检查是否存在任何要处理的数据-如果您的表单已发送任何内容,则这是回发,所以您需要对数据进行处理
  • 如果您的数据处理一切正常,则响应。重定向到您的感谢页面(这有助于阻止用户刷新页面,并可能两次运行您的代码)
  • 如果有任何错误,请将其写出来(sys_message stuff)
  • 显示表单
这样你就不需要担心天气来显示表单,如果一切正常,它只会重定向关闭,页面的其余部分就不会处理

理想情况下,我会将include中的代码包装成一个函数/子函数,并将其包含在顶部,然后您可以在代码或类似代码中的任何地方调用它


当然,您应该切换到ASP JScript:p

也许有响应。Write()打印成功/失败并通过ajax调用访问它?当您在VB代码中有注释时,请将
'
对折到
'
,然后按//或#。它使代码在SO中更具可读性。例如,
'/
'#
好提示Anthony,你能推荐一个补丁吗?@Pete:see-根据我的经验,经典ASP与VBScript的关系比与JScript的关系要好得多。:)我以前也这么认为,但当我多年前接受一份工作时,我就改变了主意,再也没有回头看,这是一种很好的工作语言。我是一个JScript转换程序,也许你应该再试试JS,你可以用它创造奇迹:)