2013-10-11 4 views
2

У меня есть функция ColdFusion, которая проверяет, существует ли запись в таблице, и если она возвращает данные для найденной строки. Однако, если запись не существует, я хотел бы, чтобы она вызывала функцию JavaScript, которую я написал, и использую значение, которое возвращается из функции JS, чтобы продолжить обработку в функции CF. Я знаю, что CF написан на Java, поэтому я надеюсь, что есть что-то сделать для выполнения этой задачи.Вызов функции Javascript из ColdFusion CFC

В основном, из CF страницы, шаги были бы ...

  1. вызова CF Функция находится в моем functions.cfc файле
  2. Внутри функции CF, сделать вызов функции JavaScript и ждать ответа
  3. Продолжить обработку в функции CF, используя значение, возвращаемое функцией JS.

Любые идеи? Спасибо за любую помощь!

+0

Просто вставьте его с помощью тегов скриптов? –

+0

@RUJordan, не уверен, что вы имеете в виду. Просто вставьте его с помощью тегов скриптов? Функция javascript, которую мне нужно вызвать, выполняет аякс-вызов API Google для поиска информации по почтовому индексу. – Phil

+0

Весь ваш код и вызовы cf выполняются до того, как страница будет отображена и отправлена ​​в браузер ... поэтому просто поставьте CFIF-инструкцию вокруг некоторого кода javascript, чтобы он выполнялся, если вы получили нужные значения. – steve

ответ

2

Был более сложным, пытаясь использовать javascript для вызова ajax. Просто переключитесь на использование cfhttp, и все работает по мере необходимости. Метод DeserializeJSON CF отлично подходит для анализа объекта json, возвращаемого API Google.

8

Вам необходимо понять, что CF и JS не существуют в одной и той же среде и не могут взаимодействовать друг с другом следующим образом: http://blog.adamcameron.me/2012/10/the-coldfusion-requestresponse-process.html.

Ваш JS может сделать удаленный вызов CF, но CF не может инициировать вызов JS, основанный на его обработки, потому что в то время как CF является обработка, все еще находится на сервере, так что JS не является частью рецепта ,

Лучшее, что вы можете сделать, это записать код кода JS, который затем отправляется в браузер, который затем выполняется, когда браузер запускает JS во время рендеринга страницы.

Но это действительно не соответствует тому, что вы хотите здесь сделать.

Все, что вы делаете, должно вписываться в жизненный цикл запроса/ответа.

Вы можете сделать это:

  1. из уже загруженной страницы, сделать вызов JS к методу в functions.cfc
  2. functions.cfc «s вызов метода может только процесс, а затем вернуть то, что в JS, что обожженного запрос в 1.
  3. JS может затем принять решение о том, что делать дальше, возможно, уволив еще один запрос обратно до functions.cfc, чтобы продолжить обработку.

То, что вы не можете сделать, это шаг на 2 и перезвонит JS и продолжить обработку, а затем вернуться что-то еще к JS позже. Каждый запрос может иметь только один ответ. Поэтому вам может потребоваться несколько запросов.

Смежные вопросы