2013-09-30 62 views
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> 
+1

你確定它進入您的'cflocation'代碼? –

+0

我不知道如果confirm.cfm有JavaScript,試圖去#errors –

+0

@MattBusche是的,因爲這兩個頁面是獨一無二的,顯示證實它。 – TekiusFanatikus

回答

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>