我们遇到以下问题:
从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)
也许有些设置已经改变或类似......
答案 0 :(得分:1)
我们确实找到了解决方案:我们的apache服务器出现了问题! 所有POST数据在转发到coldfusion之前都已丢失 - 因此FORM变量始终为空。
修复配置后(我不知道怎么办......)问题解决了。
答案 1 :(得分:0)
我正在使用IIS,它可以很好地进行ajax调用等.APACHE的问题是什么?