0

アプリケーションの 1 つに CF MX7 を使用しています。

アプリケーションを通じて検索する一連の文字を入力すると、CF は次のようなエラーをスローします。

要素 USER_NAME は URL で定義されていません。

D:\Inetpub\wwwroot\MISWEB\lci\userNavigator.cfm でエラーが発生しました: 2 行目

1 : <CFSET login_id = #url.user_login#>
2 : <CFSET user_name = #url.user_name#>
3 : <CFSET user_id = #url.user_id#>

これは、ログイン ID に # 文字が含まれているものを検索するために入力したときに発生します 0952#2。基本的に、入力しているログイン ID に問題があることは理解しましたが、ユーザーにログイン ID の変更を求めることはできません。これらの値を受け入れるようにコードを変更する別の方法はありますか?

<CFSET login_id = #0952#2#>

したがって、ユーザー名が正しくないため、ユーザー名を受け入れていない2行目にエラーがスローされています。宣言 #..# オープンおよびクローズ # 関数内で提供されるログイン ID に存在する # を含める方法はありますか?

4

1 に答える 1

4

検索フォームがGETリクエストを実行しているため、フォーム フィールドが URL に追加されます。問題は、ブラウザがハッシュ (#) をページ上の場所として解釈しているため、URL の最初のハッシュ以降はサーバーに送信されていないため、ColdFusion はハッシュが存在しないと言います。

これを克服するには、フォームを送信する前にハッシュをエンコードする必要があります。これは、JavaScript とフォームのonsubmitハンドラーで行うことができます。

escape(document.formName.user_name.value);

これによりuser_name、URL の がエンコードされた形式 ( %230952%232%23) で送信されます。これを user_name に設定するとデコードできます。

<cfset user_name = urlDecode(url.user_name)>
于 2013-09-20T00:18:06.943 に答える