0

我们将 CF MX7 用于我们的一个应用程序。

当我们通过应用程序输入一组字符进行搜索时,CF 会抛出一个错误,说明如下:

URL 中未定义元素 USER_NAME。

错误发生在 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 以搜索其中包含 # 字符的登录 ID 0952#2 时,就会发生这种情况。所以基本上,我知道问题出在我们输入的登录 ID 上,但我们不能要求用户更改他的登录 ID。是否有另一种方法可以以接受这些值的方式更改代码?

<CFSET login_id = #0952#2#>

因此错误在第二行被抛出,它不接受用户名,因为它不正确。有什么方法可以将 # 包含在声明 #..# open 和 close # 函数中提供的登录 ID 中?

4

1 回答 1

4

因为搜索表单正在执行GET请求,所以表单字段被添加到 URL。问题是哈希 (#) 被浏览器解释为页面位置,因此在 URL 中的第一个哈希之后甚至没有任何内容被发送到服务器,这就是 ColdFusion 说它不存在的原因。

为了克服这个问题,您需要在提交表单之前对哈希进行编码。您可以使用 JavaScript 和表单的onsubmit处理程序来执行此操作。

escape(document.formName.user_name.value);

这将以user_name编码格式 ( %230952%232%23) 发送 URL,然后您可以在将其设置为 user_name 时对其进行解码。

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