coldfusion onrequestend.cfm - PullRequest
       3

coldfusion onrequestend.cfm

2 голосов
/ 01 октября 2010

Есть ли способ сделать onrequestend.cfm вызов условным.т.е. если я вызываю шаблон через ajax, я не хочу, чтобы onrequestend.cfm выполнялся для запросов ajax.

Как и в моем случае, это генерирует некоторую информацию заголовка, такую ​​как метатеги и т. д.

Ответы [ 3 ]

5 голосов
/ 01 октября 2010

У вас есть несколько вариантов:

  • Поместите пустой файл onRequestEnd.cfm в каталог, содержащий службы AJAX, к которым вы подключаетесь, как рекомендует Даниэль.
  • Переключиться на Application.cfc и событие onRequestEnd() вместо onRequestEnd.cfm; и внутри вашего метода onRequestStart() скажите ColdFusion, чтобы он ничего не делал для события onRequestEnd.

Поскольку вы не указали, я угадаю и скажу, что ваши AJAX-запросы используют CFC, например, так:

/foo/bar.cfc?method=getSomething&param=value

В этом случае вы можете легко идентифицировать все запросы, перенаправляемые на CFC, следующим образом:

function onRequestStart(targetPath){
    if (listLast(arguments.targetPath, ".") eq "cfc"){
        structDelete(this, "onRequestEnd");
    }
}

Обратите внимание, что функция удаляется только для текущего запроса , поэтому вам не нужно беспокоиться о том, что она не будет доступна для будущих запросов. Это будет.

0 голосов
/ 17 декабря 2013

Мы справляемся с переменными URL.Вызовите любую страницу с помощью

?NoHeaderFooter=true

, а затем условную логику в onRequestStart следующим образом:

<cfif NOT StructKeyExists(URL,"NoHeaderFooter")>
output header/footer etc. here
</cfif>

Можно использовать как в onRequestStart, так и в onRequestEnd или создать две переменные, чтобы вы могли контролировать каждую.Тогда все наши вызовы ajax подчиняются чему-то вроде:

report/FormController.cfc?Method=DoSomething&NoHeaderFooter=true
0 голосов
/ 01 октября 2010

Я не осознаю этого. Однако, если вы поместите все шаблоны, которые вы будете вызывать, в подкаталог и поместите пустой файл onRequestEnd.cfm в подкаталог, который должен дать вам тот же эффект.

...