Получить несколько строк из результата контроллера json ajax - PullRequest
0 голосов
/ 24 января 2019

У меня есть кнопка, отправляющая ввод из текстового поля формы на мой контроллер mvc с помощью ajax.Теперь я хочу, чтобы контроллер возвращал 2 строки в виде json и заполнял эти строки во входных данных html.

Контроллер

[HttpPost]
    public ActionResult getName(string Name)
    {

        string SecondString = "secondString";

        return Json(Name, SecondString);
    }

Просмотр

<script>
$(document).ready(function () {
    $("#btnGet").click(function () {
        $.ajax(
            {
                type: "POST", 
                url: "home/getName", 
                data: { 
                    Name: $("#txtName").val()
                },
                success: function (result) {
                    $('#FirstTextFieldToFill').val(result);
                    $('#SecondTextFieldToFill').val(result);

                },
                failure: function (response) {
                    alert(response.responseText);
                },
                error: function (response) {
                    alert(response.responseText);
                }
            });

    });
});

Ответы [ 3 ]

0 голосов
/ 24 января 2019

Работал так:

Контроллер

[HttpPost]
    public ActionResult getName(string Name)
    {

        string SecondString = "secondString";

        return Json(new { Name, SecondString });
    }

Просмотр

<script>
$(document).ready(function () {
    $("#btnGet").click(function () {
        $.ajax(
            {
                type: "POST", 
                url: "home/getName", 
                data: { 
                    Name: $("#txtName").val()
                },
                success: function (result) {
                    $('#FirstTextFieldToFill').val(result.Name);
                    $('#SecondTextFieldToFill').val(result.SecondString);
                    $('#SecondTextFieldToFill').show();
                    $('#FirstTextFieldToFill').show();


                },
                failure: function (response) {
                    alert(response.responseText);
                },
                error: function (response) {
                    alert(response.responseText);
                }
            });

    });
});

0 голосов
/ 24 января 2019

Для этого вы должны создать класс с двумя строками, например.

public class example
{
    public string FirstString {get; set;}
    public string SecondString {get; set;}
}

создать объект класса в контроллере и добавить в него строки, сериализовать в json и вернуть

   [HttpPost]
    public ActionResult getName(string Name)
    {
        example eg=new example();
        eg.FirstString ="your first string";
        eg.SecondString ="your second string";
        string jsonString= JsonConvert.SerializeObject(eg);
        return Json(jsonString);
    }

Файл JS должен извлекать строки из объекта json

<script>
$(document).ready(function () {
    $("#btnGet").click(function () {
        $.ajax(
            {
                type: "POST", 
                url: "home/getName", 
                data: { 
                    Name: $("#txtName").val()
                },
                success: function (result) {
                    var jsonResult=JSON.parse( result );
                    $('#FirstTextFieldToFill').val(jsonResult.FirstString);
                    $('#SecondTextFieldToFill').val(jsonResult.SecondString);

                },
                failure: function (response) {
                    alert(response.responseText);
                },
                error: function (response) {
                    alert(response.responseText);
                }
            });

    });
});

Зависимости, необходимые в контроллере JsonConvert из пространства имен Newtonsoft.Json

Используйте NuGet для загрузки пакета

"Project" -> "Управление пакетами NuGet" -> "Поиск" newtonsoft json ". -> нажмите" установить "

0 голосов
/ 24 января 2019

Неправильно назначены параметры для метода Json() для возврата ответа JsonResult, поскольку вторым параметром является JsonRequestBehavior или contentType. Вы должны вернуть Controller.Json() ответ с одиночным параметром следующим образом:

[HttpPost]
public ActionResult GetName(string Name)
{
    string SecondString = "secondString";

    return Json(new { Name = Name, SecondString = SecondString });
}

А затем измените ваш вызов AJAX, чтобы он возвращал 2 строки из ответа, используя имена свойств:

$("#btnGet").click(function () {
    $.ajax({
        type: "POST", 
        url: "@Url.Action("GetName", "Home"), 
        data: { Name: $("#txtName").val() },
        success: function (result) {
            $('#FirstTextFieldToFill').val(result.Name);
            $('#SecondTextFieldToFill').val(result.SecondString);
        },
        failure: function (response) {
            alert(response.responseText);
        },
        error: function (response) {
            alert(response.responseText);
        }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...