我正在遇到一个有问题的墙,而且我可能需要花费更多的时间来承认跟踪此事。
具体来说,我有一个jQuery AJAX调用,它将一些数据发布到.cfc我调用该方法,并传入一些参数运行一些数据库查询,然后不返回任何内容。然后我继续使用AJAX函数的success方法。
我是在ColdFusion 11服务器上开发的,它可以解决问题。然而,在我最近转向Lucee服务器时,我遇到了各种各样的问题。
首先我注意到没有调用成功方法。然而,Firebug正在通话中报告200 OK。所以我进一步检查了数据库查询都在方法中运行。除此之外,Lucee日志看起来也很干净,并承认数据库查询已成功运行。所以一切都报告正常(我知道要检查的事情)。我已经掌握了基础知识,并且尝试了不同的机器和不同的浏览器,这是特定的,但没有任何改变。
我注意到Firefoxes Inspect Element抛出了一个无元素发现错误,经过进一步检查,它返回我发布到cfc的参数未定义。这让我进一步深入挖掘,我注意到它返回了这个错误'XML解析错误:没有找到任何元素'仍然说回报是200 OK,但还不足以完成AJAX调用的成功方法
我没有实际结果的其他想法是启用CORS,包括返回类型的JSON(删除了XML错误,但没有做其他事情)。
我可以尝试的任何想法,我开始怀疑整个Lucee设置是否拙劣,我需要废弃并重新安装?
感谢你提出的任何帮助或想法。
编辑:没有附加代码的道歉,因为这似乎连接到服务器设置我天真地希望有人会去,“是的,你需要设置此设置并修改此文件你们都很好!“然后我们都会嘲笑Tomcat。
我假设第一条评论说“向我们展示你的代码!”事实并非如此。因此,我提出了一个最小的测试用例,它仍然证实了我的原始问题:
test.cfm
<!--- jQuery 2.1.4 --->
<script src="./jQuery-2.1.4.min.js"></script>
<script>
$(document).ready(function() {
$.ajax({
type: "post",
url: "./test.cfc",
data: {
method: "test",
var1: "var1",
var2: "var2"
},
success: function(result) {
alert('Hello Friend!');
}
});
});
</script>
test.cfc
<CFCOMPONENT>
<!--- Test Function --->
<CFFUNCTION NAME="test" ACCESS="remote">
<CFARGUMENT NAME="var1" />
<CFARGUMENT NAME="var2" />
<CFOUTPUT>
Var 1: #var1#<br />
Var 2: #var2#
</CFOUTPUT>
</CFFUNCTION>
<!--- End Test Function --->
</CFCOMPONENT>
可能更重要的是我在Lucee 4.5.1.023
以前任何帮助总是非常感谢。
答案 0 :(得分:0)
所以我小睡了一下,然后回来了。我认为这与ColdFusion的代码或风格关系不大,更多的是与网络服务器有关。
我开始玩各种可用的数据类型,并开始看到返回结果的变化。它们并没有立即显现,因为它们之前有大量的空白区域。
这个问题的一部分是我自己的错误编码。我通常只在需要返回特定内容时才使用dataType,例如JSON,否则我把它留下来,将会有一个“智能猜测”在返回的内容。我猜测我的场景中的主要区别在于使用Apache HTTP Server(工作)与Apache Tomcat(不起作用)所以当我包含dataType:'text'然后大量使用jQuery函数.trim()我可以实现我想要的目标。
我也因此在这个过程中使我的代码更好。
希望这有助于某些人(至少对我而言)难以诊断半静默失败的问题。