-1

继这个问题之后jQuery Ajax error handling, show custom exception messages我试图在提交表单但发生错误时向我的用户显示来自 ColdFusion(通过 AJAX)的自定义错误消息。

我尝试使用一个标准来执行此操作,该标准<cfthrow errorcode="500" message="You did something wrong"/>将返回给 jQuery 的响应状态代码不是 200,因此很容易显示如下错误:

...
error: function (xhr, textStatus, thrownError) {
                        $('p').text(thrownError);
                    }

但是,在 ColdFusion 生产服务器中,建议在调试设置中关闭错误报告。所以现在我的用户看到的"Internal server error"不是自定义消息。

我现在的临时解决方案是只做一个<cfreturn "Error: You did something wrong"/> <cfabort>然后让 jQuery 从文本以“错误:”开头的服务器查找任何返回的结果。

我宁愿使用适当的异常处理<cfthrow>。鉴于关闭调试的建议,如何实现这一点?

4

2 回答 2

1

我有类似的问题。请试试这个:首先确保在服务器设置 -> 设置下的 CF Admin 中未选中“启用 HTTP 状态代码”。您可能需要重新启动 ColdFusion 服务器。这将阻止 CF 将所有状态设置为 404 或 500。然后在您的服务器代码下面添加一行(根据您的异常/代码修改它)。

<cfthrow type="Authentication" errorcode="450" message="this is message">

这应该在您的 javascript 错误处理程序中为您提供 450 状态代码。

于 2016-09-15T00:03:13.603 回答
-1

<cfthrow>errorCode 不是 HTTP 状态码响应。如果您确实抛出未捕获的错误,默认情况下会使用 500 HTTP 状态代码进行响应,而不管您的<cfthrow>. 在这种情况下,您可能希望使用 的.error()方法jquery.ajax()向用户显示消息。通常情况下,您希望避免故意抛出错误,而只包含 500 状态码标头。或者,正如您在问题中指出的那样,您可以使用return一些在..success()$.ajax()

于 2016-09-14T12:49:13.783 回答