代码之家  ›  专栏  ›  技术社区  ›  user160820

冷融onrequestend.cfm

  •  2
  • user160820  · 技术社区  · 14 年前

    有没有办法 onrequestend.cfm 调用条件。 i、 如果我通过ajax调用模板,我不希望这样 onrequestend.cfm 应该在ajax请求上执行。

    3 回复  |  直到 11 年前
        1
  •  5
  •   Adam Tuttle    14 年前

    • 空白处onRequestEnd.cfm在包含您要连接的AJAX服务的目录中,正如Daniel推荐的那样。
    • 切换到应用.cfc以及 onRequestEnd() 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");
        }
    }
    

    对于当前请求 ,所以您不必担心它不会出现在将来的请求中。会的。

        2
  •  0
  •   Daniel Sellers    14 年前

    我不知道有什么。但是,如果你把所有的模板都放在一个子目录中,你将调用一个空的onRequestEnd.cfm在子目录中,应该给你同样的效果。

        3
  •  0
  •   crazy4mustang    11 年前

    我们用URL变量来处理这个问题。呼叫任何具有

    ?NoHeaderFooter=true
    

    然后onrequest中的条件逻辑开始如下:

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

    可以在onRequestStart和onRequestEnd中使用,或者创建两个变量以便可以控制每个变量。然后我们所有的ajax调用都会提交到:

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