gpt4 book ai didi

javascript - 如果 Web 服务关闭,我如何将错误消息作为 JSON 对象返回

转载 作者:行者123 更新时间:2023-11-30 18:17:10 25 4
gpt4 key购买 nike

我在调用 Web 服务并将 Json 结果返回到 View 的 asp.net mvc Web 应用程序中有以下操作方法:-

public ActionResult ListPackages()
{
using (var client = new WebClient())
{
try{
var query = HttpUtility.ParseQueryString(string.Empty);
UriBuilder("http://localhost:8080/jw/web/json/workflow/package/list");
url.Query = query.ToString();
string json = client.DownloadString(url.ToString());
Thread.Sleep(500);
return Content(json, "application/json");
}
catch (System.Net.WebException ex) {
return Content("Error, service is down. please try again later", "application/json");
}
}
}

然后在 View 上我定义了以下 Ajax.Actionlink:-

@Ajax.ActionLink("Get Process List", "ListPackages", "Home",
new AjaxOptions
{
HttpMethod = "GET",
LoadingElementId = "tobehide",
OnSuccess = "getpackagelist"
})

和以下 getpackagelist java 脚本:-

function getpackagelist(result) {
$('#products').empty();
$('#title').text("All Processes");
$.each(result.data, function (key, val) {
var str = val.packageName;
$('<li/>', { text: str }).appendTo($('#products'));
});
$('#tobehide').hide();

}

我面临的问题是,如果 Web 服务已关闭并且 System.Net.WebException 异常被引发 “错误,服务已关闭。请稍后再试” maeeage 将不会显示在 View 中,ajax 加载图像后将不会显示任何内容...

:::编辑:::

我将脚本修改为:-

function getpackagelist(result) {

if (result.error == null) {
$('#products').empty();
$('#title').text("All Processes");
$.each(result.data, function (key, val) {
var str = val.packageName;
$('<li/>', { text: str })
.appendTo($('#products'));
});
$('#tobehide').hide();
}
else {
$('<li/>', { text: result.error })
.appendTo($('#products'));
}

Action 方法如下:-

catch (System.Net.WebException) {

return new JsonResult()
{
Data = new { error = "Error, service is down. please try again later" }
};

但如果引发 WebExsception,仍然不会显示错误。BR

最佳答案

编辑

正如 john G 纠正我的那样,当然 OnFailure 不会在这里被调用,因为 Controller 正在捕获异常。因此,要返回有效的 JSON 结果,请使用以下内容:

return new JsonResult() { 
Data = new { error = "Error, service is down. please try again later" }
};

这只是创建一个匿名类型(连同 JsonResult)作为返回任意 JSON 的简单方法。然后在 OnSuccess 脚本中,检查 error 属性:

function getpackagelist(result) {
if (result.error) {
// display error ...
} else {
// success ...
}
}

使用 AjaxOptionsOnFailure 属性来处理错误场景。

new AjaxOptions
{
// ...
OnFailure = "packagelisterror"
}

请注意,该函数将传回一个包含 responseText 属性的 JSON 对象。因此,您可以使用类似以下内容显示错误消息:

function packagelisterror(e) {
$("#products").html(e.responseText);
}

关于javascript - 如果 Web 服务关闭,我如何将错误消息作为 JSON 对象返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12996315/

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