Lucee / AJAX / CFARGUMENT 失败
Lucee / AJAX / CFARGUMENT failing
我遇到了一个问题,我承认追踪这件事情的时间可能超过了我愿意承认的时间。
具体来说,我有一个 jQuery AJAX 调用,它将一些数据发布到 .cfc 我调用该方法并传入一些参数 运行 一些数据库查询和那么什么都没有 returned。然后我使用 AJAX 函数的成功方法继续。
我是在 ColdFusion 11 服务器上开发的,效果很好。然而,在我最近迁移到 Lucee 服务器时,我遇到了各种各样的问题。
首先我注意到没有调用成功方法。但是 Firebug 正在报告通话中的 200 OK。所以我进一步检查,数据库查询在方法中包含所有 运行 。除此之外,Lucee 日志看起来也很干净,并确认数据库查询 运行 成功。所以一切都报告正常(我知道要检查的事情)。我已经完成了基础知识并尝试了不同的机器和不同的浏览器,以防万一这是特定的,但没有任何变化。
我注意到 Firefoxes Inspect Element 抛出一个没有找到元素的错误,并且在进一步检查后 returning 我发布到 cfc 的参数是未定义的。这让我进一步挖掘,我注意到它是 returning 这个错误 'XML Parsing Error: no element found' 仍然说 return 是 200 OK,但还不够好,无法成功AJAX 调用的方法。
我有过并尝试过但没有实际结果的其他想法是启用 CORS,包括 return 类型的 JSON(它消除了 XML 错误,但几乎没有其他作用)。
关于我可以尝试什么的任何想法,我开始怀疑整个 Lucee 设置是否有问题,我需要废弃它并重新安装吗?
感谢您提供的任何帮助或想法。
编辑: 抱歉没有附上代码,因为这似乎连接到服务器设置我天真地希望有人会去,"Yeah you need to set this setting and modify this file and you're all good!" 然后我们Tomcat 大家都会笑的。
我假设第一条评论说 "Show us your code!" 事实并非如此。因此,根据提示,我整理了一个最小测试用例,它仍然证实了我原来的问题:
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
一如既往,我们将不胜感激任何帮助。
所以我睡了个午觉,回来解决这个问题。我认为这与 ColdFusion 的代码或风格无关,而与网络服务器有关。
我开始使用各种可用的数据类型,并开始看到 return 结果的变化。它们并没有立即显现出来,因为它们之前有大量的白色 space。
所以这个问题的一部分是我自己的错误编码。我通常只在需要特定的 returned 时才使用数据类型,例如JSON,否则我将其省略,并且将在 return 编辑的内容上制作 "intelligent guess"。我猜想我的场景的主要区别是使用 Apache HTTP Server(有效)与 Apache Tomcat(无效)所以当我包含 dataType: 'text' 然后自由地使用 jQuery function .trim() 我可以实现我想要的。
我也因此在这个过程中改进了我的代码。
希望这能帮助那些发疯的人(至少对我来说)难以诊断半静默失败的问题。
我遇到了一个问题,我承认追踪这件事情的时间可能超过了我愿意承认的时间。
具体来说,我有一个 jQuery AJAX 调用,它将一些数据发布到 .cfc 我调用该方法并传入一些参数 运行 一些数据库查询和那么什么都没有 returned。然后我使用 AJAX 函数的成功方法继续。
我是在 ColdFusion 11 服务器上开发的,效果很好。然而,在我最近迁移到 Lucee 服务器时,我遇到了各种各样的问题。
首先我注意到没有调用成功方法。但是 Firebug 正在报告通话中的 200 OK。所以我进一步检查,数据库查询在方法中包含所有 运行 。除此之外,Lucee 日志看起来也很干净,并确认数据库查询 运行 成功。所以一切都报告正常(我知道要检查的事情)。我已经完成了基础知识并尝试了不同的机器和不同的浏览器,以防万一这是特定的,但没有任何变化。
我注意到 Firefoxes Inspect Element 抛出一个没有找到元素的错误,并且在进一步检查后 returning 我发布到 cfc 的参数是未定义的。这让我进一步挖掘,我注意到它是 returning 这个错误 'XML Parsing Error: no element found' 仍然说 return 是 200 OK,但还不够好,无法成功AJAX 调用的方法。
我有过并尝试过但没有实际结果的其他想法是启用 CORS,包括 return 类型的 JSON(它消除了 XML 错误,但几乎没有其他作用)。
关于我可以尝试什么的任何想法,我开始怀疑整个 Lucee 设置是否有问题,我需要废弃它并重新安装吗?
感谢您提供的任何帮助或想法。
编辑: 抱歉没有附上代码,因为这似乎连接到服务器设置我天真地希望有人会去,"Yeah you need to set this setting and modify this file and you're all good!" 然后我们Tomcat 大家都会笑的。
我假设第一条评论说 "Show us your code!" 事实并非如此。因此,根据提示,我整理了一个最小测试用例,它仍然证实了我原来的问题:
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
一如既往,我们将不胜感激任何帮助。
所以我睡了个午觉,回来解决这个问题。我认为这与 ColdFusion 的代码或风格无关,而与网络服务器有关。
我开始使用各种可用的数据类型,并开始看到 return 结果的变化。它们并没有立即显现出来,因为它们之前有大量的白色 space。
所以这个问题的一部分是我自己的错误编码。我通常只在需要特定的 returned 时才使用数据类型,例如JSON,否则我将其省略,并且将在 return 编辑的内容上制作 "intelligent guess"。我猜想我的场景的主要区别是使用 Apache HTTP Server(有效)与 Apache Tomcat(无效)所以当我包含 dataType: 'text' 然后自由地使用 jQuery function .trim() 我可以实现我想要的。
我也因此在这个过程中改进了我的代码。
希望这能帮助那些发疯的人(至少对我来说)难以诊断半静默失败的问题。