1

我目前有一个指向自身的表单,但更准确地说,指向错误的内部锚点:

<form action="#errors" method="post">
...
</method>

提交表单后,我将验证传入的数据,如果出现错误,则将它们输出到屏幕上(位于内部锚点内)。如果数据有效,我将重定向到确认页面:

<cflocation url="confirm.cfm" addToken="no" />

我的问题是重定向到的页面仍然包含对内部锚点的引用。URL 如下所示:

http://mydomain.com/confirm.cfm#errors

我已经用其他语言尝试过这个,并且能够在重定向后没有锚点的情况下复制这个功能。

编辑#1

这是在 CF10、Windows 2008 R2 上。

表格页面:

<cfif not structIsEmpty(form)>
    <cfinvoke component="#request.cfcPath#.val" method="init" returnvariable="valObj"></cfinvoke>

    <cfset valObj.validateGame()>

    <cfif valObj.hasErrors()>
        <cfoutput>#valObj.showErrors()#</cfoutput>
    <cfelse>    
        <cfif form.editYN eq 0>
            <cfinclude template="actInsert.cfm">
        <cfelse>
            <cfinclude template="actUpdate.cfm">
        </cfif> 
    </cfif> 
</cfif>

actUpdate.cfm

<!--- Redirect --->
<cfquery>...</cfquery>
...
<cflocation url="default.cfm?fuseaction=Confirm.gameUpdated" addtoken="No">

actInsert.cfm

<!--- Redirect --->
<cfquery>...</cfquery>
...
<cflocation url="default.cfm?fuseaction=Confirm.gameAdded" addtoken="No">

编辑#2

这是一个测试用例:

<!DOCTYPE html>
    <head>
        <title></title>
    </head>
    <body>

        <cfif StructKeyExists(form, "doRedirect")>
            <cfif form.doRedirect eq 1>
                <cflocation url="http://stackoverflow.com" addtoken="false">
            <cfelse>
                <div id="errors">
                    <ul>
                        <li>Some error could have occured here.</li>
                    </ul>
                </div>
            </cfif>
        </cfif>

        <form action="#errors" method="post">
        <div><label for="doRedirect">Do Redirect?</label><select name="doRedirect" id="doRedirect"><option value="0">No</option><option value="1">Yes</option></select></div>
        <div><input type="submit" value="Go"/></div>
        </form>
    </body>
</html>
4

1 回答 1

1

您可以在表单的操作部分添加 # 值。否则,您可以这样做:

  <form action="" method="post">
    <div><label for="doRedirect">Do Redirect?</label><select name="doRedirect" id="doRedirect"><option value="0">No</option><option value="1">Yes</option></select></div>
    <div><input type="submit" value="Go"/></div>
    </form>
于 2013-10-03T06:47:31.083 回答