игра - coldfusion что это



Могу ли я использовать теги ColdFusion в JavaScript? (1)

Длинная версия: http://blog.adamcameron.me/2012/10/the-coldfusion-requestresponse-process.html

Короткий вариант: нет, вы не делаете это правильно.

Средняя версия, совместимая с StackOverflow: CFML-код выполняется на стороне сервера запроса; JavaScript работает в браузере клиента. И чтобы быть понятным: сервер ColdFusion никогда не общается с браузером напрямую: между ними есть веб-сервер. Клиентский браузер запрашивает файл, веб-сервер настроен для передачи запросов .cfm на сервер ColdFusion, и он запускает свой код, возвращая результирующую строку (например: веб-страницу HTML) на веб-сервер, который затем возвращает это на браузер. Этот HTML может включать JavaScript (встроенные или внешние запросы), которые браузер выполнит.

Надеюсь, из этого вы увидите, что прямого взаимодействия между серверным кодом и кодом на стороне клиента нет.

У вас есть два объекта в вашем распоряжении, чтобы обе стороны сообщали асинхронно. Во-первых: CFML-код выписывает текст, но этот текст может быть JS, который затем запускает браузер, когда он его окончательно получает. Что-то вроде:

<cfset msg ="G'day world">
<script>alert("<cfoutput>#msg#</cfoutput>");</script>

После того, как сервер CFML обработал это, то, что отправляется обратно в браузер, является:

<script>alert("G'day world");</script>

Таким образом, серверные данные кода могут использоваться в клиентском процессе, если код на стороне сервера «выписывает» данные как часть его ответа. Приведенный выше пример очень тривиальный, а не способ «хорошей практики», но он демонстрирует технику.

Если вам нужно использовать JS-код на клиенте для связи с сервером, ваш единственный (реальный) регресс должен сделать запрос AJAX обратно на сервер, чтобы передать ему клиентскую информацию для дальнейшей обработки на стороне сервера и для сервера что-то ответить. Это выходит за рамки вашего вопроса, чтобы объяснить, как лучше всего это сделать, но есть тонна информации, чтобы сделать это.

CFML предоставляет некоторые «волшебники» для написания HTML и JS для вас, чтобы облегчить это, но в целом это плохой подход к достижению этой цели, поэтому я не буду рекомендовать его. Однако я укажу вам на проект, который предлагает решения HTML / JS / CSS для встроенного волшебства CFML: https://github.com/cfjedimaster/ColdFusion-UI-the-Right-Way

Вернемся к короткому ответу: нет, вы не можете делать то, что вы собираетесь делать по очень веским причинам, но если вы пересмотрите свой подход, вы сможете достичь желаемых целей.

Что вам нужно посмотреть, это передать поля формы обратно на сервер через AJAX (jQuery делает это очень просто) и запустить ваш код <cfquery> в отдельном запросе.

Если вы прочтете эту статью в блоге, которую я упоминаю с самого начала (discloure: я написал ее, но я написал ее специально для таких ситуаций), тогда вы поймете, почему.

Если вы застряли при работе над частью своего решения: поднимите еще один вопрос, который больше сосредоточен на любой части, на которой вы застряли.

Могу ли я использовать теги ColdFusion в JavaScript? Например:

 <script language="javascript" type="text/javascript">
   function validateUser() {
    var userName = document.getElementById("username");

 <CFQUERY DATASOURCE="mydatasourcename" NAME="getUser">
  select USER_ID,COUNT(*) from  user u 
 where u.firstname=userName;
  </CFQUERY>
 <cfif getUser.recordCount EQ 0>
   <!--- Show eroor message --->
   <cfelse>
    <!--- Assign userId to hidden field --->
    document.getElementById("userid").value=#USER_ID#
  </cfif>   
    }
 </script>

<input type='textbox' name='username' id='username' onblur=validateUser()/>
<input type='hidden' name='userid' id='userid'/>

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

Правильно ли я делаю это? Если это неправильно, можете ли вы предложить правильный путь?