2013-09-19 2 views
0

Мы используем CF MX7 для одного из наших приложений.Ошибка специального символа в страницах coldfusion cfm

Когда мы вводим набор символов для поиска через 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#> 

Это происходит, когда мы вводим логин для поиска, который имеет # знак в нем 0952 # 2. поэтому в основном я понял, что проблема связана с идентификатором входа, который мы вводим, но мы не можем просить пользователя изменить его идентификатор входа. есть ли альтернативный способ изменить код таким образом, чтобы он принимал эти значения?

<CFSET login_id = #0952#2#> 

поэтому ошибка выгоняет на вторую линии, где она не принимает имя пользователя, как это не правильно. Есть ли способ, который мы можем включить # в идентификатор входа, указанный внутри функции # # # открытия # открытия и закрытия #?

+0

И если я предоставляю только 0952 в поиске, я получаю результаты поиска. – Karthik

+2

Вам нужно будет избежать параметра URL, чтобы хэши (#) не отображались. Браузер видит хэш и даже не отправляет его на сервер, поскольку он указывает на местоположение на странице. Попробуйте использовать 'escape (document.formName.user_name.value)' в JavaScript перед отправкой формы поиска. Это отправит его в URL в закодированном формате ('% 230952% 232% 23'), который вы можете затем декодировать, когда вы установите его на' user_name'. – imthepitts

+0

Обычно вам не нужно указывать # # в операциях , см. Http://cfmlblog.adamcameron.me/2013/09/when-to-use-pound-signs.html. – duncan

ответ

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)> 
Смежные вопросы