Хотите добавить условие, если ответное сообщение в результате json содержит текст «error», затем выполните некоторые операции.
В моем файле контроллера есть функция, которая используется для заполнения данных, однако, когда естьявляется внутренней ошибкой, подобной пользовательскому значению, которое я хочу считать ошибкой. Я классифицирую его, объединяя слово error в результате и передавая его как json result, чтобы использовать его в вызове ajax.Я пытался использовать indexOf в переменной сообщения, однако каждый раз, когда я получаю -1, имеет ли результат, полученный при вызове ajax, «Ошибка» или нет.
Это мой код C # для получения данных и передачи результата json.
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); }
}
}
});
Предположим, что у моего сценария оболочки есть 1/0, у результата json будет ошибка Divide by Zero, я получаю его в ответ.сообщение, однако, свойство indexOf () не работает.