Как передать два значения из контроллера для просмотра, используя ajax - PullRequest
1 голос
/ 27 марта 2020

Я не смог решить следующую проблему:

Я отправил вызов ajax на мой контроллер и хотел бы получить два значения обратно:

$.ajax({
        type: "POST",
        url: "/myController/myFunction",
        data: {
            sourceSubFunctionId: newSubFunctionId,
            destinationFunctionGroupId: FunctionGroupId
        },
        dataType: "json",
        async: false,
        error: function (Message) {
            log.error("Fehler beim Speichern der neuen Funktion.", Message);
            alert("Fehler beim Speichern der neuen Funktion.");
        },
        success: function (Message) {
            console.log(Message);
            newSubFunctionId = Message.SubFunctionId;
            newBMK = Message.BMK;
        }
    })

Действие запущено, пока хорошо. Теперь я хотел бы вернуть эти два значения. Я думал, что Json - правильный формат для этого, поэтому я создал простую json -подобную строку:

 string result = "{ 'SubFunctionId': '215', 'BMK': 'myNewBMK' }";

Это действие контроллера:

public JsonResult myFunction(int sourceSubFunctionId, int destinationFunctionGroupId)
    {
        string result = '{ "SubFunctionId": "215", "BMK": "MyNewBMK" }';
        //Also tried this:
        //result = Newtonsoft.Json.JsonConvert.SerializeObject(result,Newtonsoft.Json.Formatting.Indented);
        return Json(result);
    }

Неважно что я делаю, даже json выдает ошибку для неэкспонированного знака, или я получаю неопределенное в результате.

Итак, простой вопрос: как мне вернуть две строки для моего контроллера в javascript? Это не обязательно должен быть json -формат, массив с двумя значениями будет в порядке.

Спасибо, Карстен

1 Ответ

1 голос
/ 27 марта 2020

Полагаю, вы правильно нажимаете на контроллер? Если это так, то вот что происходит;

То, что вы делаете прямо сейчас, это то, что вы просто возвращаете строку, а не объект json. Как только вы получите строку в вашем ajax, вам может потребоваться сериализовать ее в объект json, чтобы вы могли получить доступ к его свойствам.

Быстрое исправление - вместо передачи строки, вы передать анонимный объект.

Попробуйте код ниже;

public JsonResult myFunction(int sourceSubFunctionId, int destinationFunctionGroupId)
{
   return Json(new {SubFunctionId="215",BMK="MyNewBMK"});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...