通过Ajax-POST调用CFC不起作用

时间:2013-10-22 07:54:23

标签: ajax coldfusion cfc

我们遇到以下问题:

从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 个答案:

答案 0 :(得分:1)

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

修复配置后(我不知道怎么办......)问题解决了。

答案 1 :(得分:0)

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