【发布时间】:2020-08-19 11:30:33
【问题描述】:
我几乎完成了使用 CFML 制作 Web 应用程序,但我有一个关于处理错误的问题。例如,我的 Web 应用程序的一部分可以执行用户输入的 SQL 代码。但是,如果用户提供的 SQL 代码无效,那么它将无法正确执行,我会收到如下错误: https://devintranet.dep.gov/oogns/sharedComponents.cfc500
这是有道理的。如果它有助于回答我的问题,这里是网络选项卡上的信息:
我想要的只是能够在状态码返回 500 时捕获并能够基于此采取行动。例如,如果我发出一个最终状态码为 500 的请求,那么我可以使用 JS 警报来告诉用户出了什么问题。
这里是sharedComponents.cfc中的函数:
<cffunction name="LoadAttribute" access="remote" returnformat="plain" returntype="string" >
<cftry>
<cfquery name ="AttributeQuery" datasource="RBDMS_UPDATE">
SELECT *
FROM dbo.OOGNS_Queries
WHERE UPPER(QueryName) = UPPER(<cfqueryparam cfsqltype="varchar" value="#form.default_ProfileName#" />)
</cfquery>
<cfcatch>
<cfoutput>
#cfcatch.Detail#<br />
#cfcatch.Message#<br />
#cfcatch.tagcontext[1].line#:#cfcatch.tagcontext[1].template#
</cfoutput>
</cfcatch>
</cftry>
<cfreturn AttributeQuery["#default_ColName#"][1] />
</cffunction>
这里是调用它的 ajax 函数:
$.ajax({
type: "POST",
url: "sharedComponents.cfc",
data: { method: "LoadAttribute",
default_ProfileName: ProfileName,
default_Entity: Entity,
default_ColName: ColName,
},
datatype: "json"
}).done(function(returnresult) {
在那之后实际上有很多代码,但我相信它与我正在尝试做的事情无关。从字面上看,如果你能告诉我如何从响应头中获取状态码,我想我会很好。
【问题讨论】:
-
这与 cfml 不完全相关,因为您在询问如何使用 ajax jquery 调用检测 http 状态代码响应。请参阅stackoverflow.com/questions/2955947/… 但是,您可以使用 cftry/cfcatch 捕获 cfml 错误,并将组件响应更改为您想要的任何内容,并调整您的 jquery ajax 函数以做出相应的反应。
-
阅读jQuery AJAX implementation doc,它内置了错误处理。您只需要使用设置。 提示:参见错误部分。
-
@AndreasRu 对不起,我有一个家庭紧急情况,已经离开家一个多星期了,我只是这么说,但你的评论帮助我到达了我需要的地方。我让它工作了。非常感谢。
-
@ColePerry 无法通过 stackoverflow 向您发送私人消息,因此我将其作为评论发布。很高兴我能以某种方式提供帮助,我非常希望您和您的家人以及您所爱的人一切都好。
标签: ajax header response http-status-codes cfml