gpt4 book ai didi

javascript - 解析 JSON 响应时出现问题

转载 作者:行者123 更新时间:2023-12-03 07:37:46 25 4
gpt4 key购买 nike

我正在使用 AJAX/JQuery 来调用 WCF 服务。我在服务端有一些 .NET try/catch 错误处理,用于检查用户是否超时,如果超时,我会传回一条 JSON 转换的消息,然后在客户端解析该消息使用 parseJSON 并用它来将用户重定向回登录页面。这一切都工作得很好,但我刚刚从服务返回了一种不同类型的错误,该错误不是 JSON 格式(它是 XML),因此错误处理函数在尝试解析时在客户端收到了 javascript 错误的答复。该错误出现在 jquery.min.js 文件中,并且是“无效字符”错误。

我的问题(最后),如果我不能总是依赖 JSON,是否有更好的方法来处理该回复?在 .NET 中,我们有一个 tryParse 方法,在这里可以很好地工作,但据我所知,JQuery/Javascript 没有这样的功能。如果无法解析回复,则会抛出 JS 错误。

这里是抛出自定义 JSON 异常的地方:

private HttpSessionState GetUserSession()
{
HttpSessionState session = HttpContext.Current.Session;

try
{
// This is a method we created that checks if user has timed out and throws the exception if so.
SessionBuilder.Create(session, HttpContext.Current.Request, HttpContext.Current.Response);
}
catch (SessionTimeOutException e)
{
throw new WebFaultException<SessionTimeOutException>(new SessionTimeOutException(e.Message), System.Net.HttpStatusCode.BadRequest);
}

return session;
}

下面是处理 AJAX 请求中的错误的客户端代码:

error: function (HttpRequest)
{
// This is the line that gets the exception because the responseText is a standard .NET XML error, not my custom JSON error.
var parsedReply = $.parseJSON(HttpRequest.responseText);

if (parsedReply.ClassName === "SessionTimeOutException")
{
var url = "../timeout.asp?" + parsedReply.Message;
window.location.href = url;
}
}

最佳答案

JavaScript 还有 try { ... } catch(ex) { ... }

error: function (HttpRequest)
{
var parsedReply;

try {
parseReply = $.parseJSON(HttpRequest.responseText);

if (parsedReply.ClassName === "SessionTimeOutException")
{
var url = "../timeout.asp?" + parsedReply.Message;
window.location.href = url;
}
} catch(ex) {
parsedReply = HttpRequest.responseText;

//Do something else
}
}

关于javascript - 解析 JSON 响应时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35542423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com