我们正在将CF MX7用于我们的某个应用程序。
当我们输入一组要通过应用程序搜索的字符时,CF会抛出一个错误,说明如下:
元素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以搜索其中包含#字符0952#2时,会发生这种情况。基本上,我明白问题在于我们输入的登录ID,但是我们不能要求用户更改他的登录ID。是否有另一种方法来更改代码,使其接受这些值?
<CFSET login_id = #0952#2#>
因此错误在第二行被抛出,因为它不正确,因此它不接受用户名。有没有什么方法可以在声明#..#open和close#function中提供的登录ID中包含#present?
答案 0 :(得分:4)
由于搜索表单正在执行GET
请求,因此表单字段会添加到网址中。问题是哈希(#)被浏览器解释为页面上的位置,因此在URL中的第一个哈希之后甚至没有发送到服务器,这就是ColdFusion说它不存在的原因。 / p>
要解决此问题,您需要在提交表单之前对哈希进行编码。您可以使用JavaScript和表单的onsubmit
处理程序执行此操作。
escape(document.formName.user_name.value);
这将以编码格式(user_name
)在URL中发送%230952%232%23
,然后您可以在将其设置为user_name时进行解码。
<cfset user_name = urlDecode(url.user_name)>