2010-10-01 5 views
2

Existe-t-il un moyen de rendre l'appel onrequestend.cfm conditionnel. Par exemple, si j'appelle un template via ajax, je ne veux pas que onrequestend.cfm soit exécuté sur les requêtes ajax.coldfusion onrequestend.cfm

Comme dans mon cas, c'est la génération de quelques informations d'en-tête comme les balises meta etc.

Répondre

5

Vous avez quelques options:

  • Placez une OnRequestEnd.cfm vierge dans le répertoire contenant les services AJAX que vous vous connectez, comme Daniel recommande.
  • Passez à Application.cfc et à l'événement onRequestEnd() au lieu de onRequestEnd.cfm; et à l'intérieur de votre méthode d'événement onRequestStart(), dites à ColdFusion de ne rien faire pour l'événement onRequestEnd.

Puisque vous n'avez pas spécifié, je suppose et dire que vos requêtes AJAX utilisent un CFC, comme ceci:

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

Dans ce cas, vous pouvez facilement identifier toutes les demandes étant acheminées vers un CFC comme celui-ci:

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

Notez que la fonction est uniquement supprimé pour la demande actuelle, de sorte que vous n'avez pas à vous soucier de ne pas être là pour les futures demandes. Ce sera.

0

Il n'y a pas que je suis au courant. Cependant, si vous placez tous les modèles que vous appelez dans un sous-répertoire et placez un onRequestEnd.cfm vide dans le sous-répertoire qui devrait vous donner le même effet.

+1

Coul vous ne pas mettre une certaine logique conditionnelle dans le onRequestEnd.cfm qui permettrait de déterminer les pages ajax? Je préfixe mes modèles ajax avec ajax_ Je voudrais imageNote FindNoCase (cgi.script_name, 'ajax _', 1) pourrait faire l'affaire. – cfEngineers

0

Nous traitons cela avec des variables d'URL. Appelez une page avec

?NoHeaderFooter=true 

et la logique conditionnelle dans onRequestStart comme ceci:

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

Peut être utilisé dans les deux onRequestStart et onRequestEnd ou créer deux variables afin que vous pouvez contrôler chacun. Ensuite, tous nos appels ajax soumis à quelque chose comme:

report/FormController.cfc?Method=DoSomething&NoHeaderFooter=true