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

通过Ajax POST调用CFC不起作用

  •  2
  • Philipp  · 技术社区  · 11 年前

    我们有以下问题:

    从AJAX调用的CFC方法突然将请求重定向到cfcexplorer,而不是执行请求。奇怪的是,只有当我们通过“POST”方法进行ajax调用时,问题才会出现,如下所示:

    // This will return the HTTP Status header:
    // Location: http://url.to:80/CFIDE/componentutils/cfcexplorer.cfc?method=getcfcinhtml&name=web.ajax&path=/web/ajax.cfc
    $.post(
        "http://url.to/ajax.cfc",
        {method: "test"},
        function(res) { alert("ajax.cfc POST return:"  + res); }
    );
    

    发出与“GET”请求相同的请求非常有效:

    // This will call the method "test" of web/ajax.cfc
    $.get(
        "http://url.to/ajax.cfc",
        {method: "test"},
        function(res) { alert("ajax.cfc GET return:"  + res); }
    );
    

    这是ajax.cfc文件(伪文件):

    <cfcomponent>
        <cffunction name="test" access="remote" returntype="Any" returnformat="JSON">
            <cfset j = {}>
            <cfset j.data = "this is the data">
            <cfreturn serializeJson(j)>
        </cffunction>
    </cfcomponent>
    

    真正让我们困惑的是,该请求在过去确实有效(我们有很多代码都是通过POST和CF代码进行ajax调用的,这些代码期望FORM数据存在,所以我们不能简单地将方法更改为GET)

    也许有一些设置发生了变化或类似。。。

    2 回复  |  直到 11 年前
        1
  •  1
  •   Philipp    11 年前

    我们确实找到了解决方案:我们的apache服务器出现了问题! 所有POST数据在转发到coldfusion之前都会丢失,因此FORM变量总是空的。

    在修复了配置(我不知道该怎么做…)之后,问题得到了解决。

        2
  •  0
  •   Tito    11 年前

    我正在使用IIS,它可以很好地进行ajax调用等。APACHE有什么问题?