4

我正在使用 JavaScript 插件将文件上传到 ColdFusion 应用程序。它使用 AJAX 与服务器通信,并期望 JSON 作为回报。(相当标准)我有两个 cfm 脚本。

第一个包含插件的表单。

第二个处理实际的上传、删除、返回文件列表等。

第二个脚本将 JSON 作为纯文本返回,供插件处理。

第二个脚本不呈现 HTML,发送回第一个脚本的 JSON 直接输入 js 插件。

实际上一切都很完美。我已经得到它来上传文件并返回文件列表。

我的问题:随着第二个脚本的代码变得越来越复杂,调试变得越来越困难。

它不渲染任何代码,所以 cfdump 没用。

我在黑暗中四处闲逛,没有错误消息或其他信息让我知道为什么某些东西不起作用。

我的限制:插件又大又复杂,如果我不需要的话,我不想弄乱它。而且我不应该弄乱它,因为它可以完美运行,问题出在我的 cf 代码上。

我也无权访问该项目的管理区域。

但我需要一些方法来记录或调试这段代码。

我的解决方案:我一直在对第三个文件执行 cfdump,但这是一个不太理想的解决方案,因为我花了一半时间编码和一半时间更改 cfdump 解决方案以满足新的需求。并且还改进了我的 cfdump 记录器以处理不同的情况。不过,我不想通过编写自己的记录器来重新发明轮子,我只想编写代码。我让我的管理员安装 AJAX 记录器,但没有意识到它是用来记录 JavaScript,而不是 ColdFusion。所以这也行不通。

我知道人们已经为 AJAX 使用过 ColdFusion。我不可能是唯一一个遇到这个问题的人。任何帮助表示赞赏。

4

4 回答 4

3

不要忘记简单而强大的<cflog>标签。您可以在代码中的任何位置转储变量,如果要转储结构,您可以使用serializeJSON(someStruct)在日志中查看整个结构(或转换为结构的对象)。将它与 Eclipse/CFBuilder 中的尾部视图结合起来,您就可以实时了解非 HTML 生成代码的内部工作方式。

于 2012-11-20T13:47:07.060 回答
2

如果您使用的是 Firefox,请在其上安装 Firebug。在控制台选项卡中,您可以看到所有 Ajax 请求,展开请求转到“HTML”选项卡。在“HTML”选项卡中,您将能够看到由服务器页面(您的第二个脚本)创建的 Html 模板,您还可以在那里找到冷融合错误。Firebug 是使用 Ajax 的一个很好的工具,希望这对你也有帮助。

于 2012-11-20T07:49:56.920 回答
1

我建议使用<cftry>并邮寄错误<cfmail type="html" ...><cfdump ...以深入了解您的脚本。

例子:

<CFTRY>
    <CFSET thingsmightgowronghere &= "foo" />
    <CFCATCH type="any">
        <CFMAIL from="debug@example.com" to="you@yours.com" subject="#cfcatch.Message#" type="html"><CFDUMP var="#cfcatch#" /></CFMAIL>
    </CFCATCH>
</CFTRY>    

也可以使用 firebug 进行调试,但是如果您 cfdump 某些东西并在 firebug 中查看它,那么爬过 cfdump 创建的 css/js 就不太舒服了。

于 2012-11-20T11:22:18.933 回答
1

我很好奇由于缺少 html 标签而导致 cfdump 不可用的信念。我只使用以下代码创建了一个页面:

<cfsetting showdebugoutput="no">
<cfset foo = "bar">
<cfdump var="#foo#">

而当我浏览它时,浏览器中出现了“bar”这个词。

于 2012-11-20T17:56:52.083 回答