如果json结果中的响应消息包含文本“error”,则需要添加条件,然后执行一些操作。
我的控制器文件中有一个函数,用于填充数据,但是当出现内部错误(如用户定义的值,我想将其视为错误)时,我会将其分类,方法是将结果中的单词error连接起来,并将其作为json result传递,以便在ajax调用中使用它。我尝试在消息变量中使用indexof,但是每次得到-1时,不管ajax调用的结果是否有“错误”。
这是我用来获取数据和传递json结果的c代码。
public List<string> PowerShellExecutorGrd(string scriptPath, string arg)
{
var items = new List<string>();
using (var shell = PowerShell.Create())
{
shell.Commands.AddCommand(scriptPath).AddArgument(arg);
var results = shell.Invoke();
System.Diagnostics.Debug.WriteLine(shell.HadErrors.ToString());
if (shell.HadErrors == false) {
if (results.Any()) {
foreach (var psObj in results)
items.Add(Server.HtmlEncode(psObj.ToString().Trim('{', '}')));
}
} else
{
var errorMessage = new StringBuilder();
foreach (ErrorRecord err in shell.Streams.Error)
{
errorMessage.AppendLine(err.ToString());
}
items.Add("Error : " + errorMessage.ToString());
}
};
return items;
}
public JsonResult FillMembers(string GroupGUID)
{
var SDC = PowerShellExecutorGrd(AppDomain.CurrentDomain.BaseDirectory + "Shell\\Get-ADGroupMembers.ps1", GroupGUID);
return Json(new { message = SDC }, JsonRequestBehavior.AllowGet);
}
这是我的ajax调用:
$.ajax({
type: "POST",
url: "/Group/FillMembers",
data: { GroupGUID: $("#ddlGroup option:selected").val() },
success: function (response) {
if ($.parseJSON(response.message).indexOf("Error") == -1) { alert(response.message); }
}
}
});
假设我的shell脚本有1/0,json结果将遇到除以零的错误,我将在response.message中得到它,但是indexof()属性似乎不起作用。