Как можно отправить ответ Json с контроллера на интерфейс в приложении Asp. NET Core MVC? - PullRequest
0 голосов
/ 02 мая 2020

Итак, у меня есть сценарий JS, который отправляет запрос на сервер и работает нормально. Однако я хочу, чтобы веб-интерфейс получил ответ, содержащий некоторую информацию, прочитал его на веб-интерфейсе и выполнил функцию.

    uploadButton.addEventListener("click", () => {
        var formData = new FormData();
        var request = new XMLHttpRequest();
        request.open("POST", "/Page/Upload");
        request.send(formData);

        if (request.response.result == "Success") {
            console.log("Result is success")
            window.location = request.response.url;
        }
}

Мой контроллер выглядит следующим образом.

[HttpPost("/page/upload")]
public IActionResult Upload()
        {
            *working parts pertaining to reading the request are omitted*

            var redirectUrl = Request.Host + "/" + page.PageURL;
            return Json(new { result = "Success", url = redirectUrl});
        }

Что я хочу, чтобы мой JS скрипт получил доступ к возвращенному Json и его содержимому. Как бы я это сделал?

1 Ответ

0 голосов
/ 02 мая 2020

Попробуйте использовать следующий код. Он подпишется на событие readystatechange и будет запущен после получения ответа API

uploadButton.addEventListener("click", () => {

        var formData = new FormData();
        var request = new XMLHttpRequest();
        request.open("POST", "/Page/Upload");
        request.send(formData);

        request.addEventListener("readystatechange", function () {

            if (this.readyState === 4) {

                var responseData = JSON.parse(this.responseText);

                if (responseData.result == "Success") {
                    console.log("Result is success")
                    window.location = responseData.url;
                }             
            }
        });
    });
...