Посмотрите на текст в JSON результат в JQuery - PullRequest
0 голосов
/ 10 июля 2019

Хотите добавить условие, если ответное сообщение в результате 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 () не работает.

1 Ответ

0 голосов
/ 10 июля 2019

Это будет работать, так как response.message имеет тип undefined, поэтому преобразование его в строку разрешит.

if (String(response.message).indexOf('Error') != -1) { 
    //Do something
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...