Отправить строку из asp.net основной контроллер для ajax в ответе на вызов ajax

#asp.net-core #controller #jquery-ajax

#asp.net-ядро #контроллер #jquery-ajax

Вопрос:

привет
, я пытаюсь отправить строку с контроллера на ajax в ответе на вызов ajax. но мой ajax не получает строку в ответ, и я вижу необработанный контент в браузере.
На самом деле, это простой пример моего основного проекта.
Я использую ASP.NET Ядро для программирования на стороне сервера. вот мои коды:
на стороне сервера :

         public IActionResult addlink(string link)
        {
            return Redirect("/home/showlink?key="   link);
        }
        public IActionResult showlink(string key)
        {
            return Content("this is content from 2nd controller");
        }
 

клиентская сторона :

 <form>
    <input type="text" id="mainlink"/>
    <button id="btn">submit</button>
</form>
<script>
    $("#btn").click(function () {
        $.ajax({
            type: "POST",
            url: "/home/addlink",
            data: {
                "link": $("#mainlink").val()
            },
            success: function (response) {

                alert(response);
            },
            error: function (xhr, status, error) {
                var err = eval("("   xhr.responseText   ")");
                alert(err.Message);
            }
        }
        )
    })
</script>
 

что я вижу в браузере :

Мои необработанные данные

в основном проекте я хочу отправить текст с контроллера на ajax call succes, только это, пожалуйста, помогите мне 🙂

Ответ №1:

Попробуйте вернуть Ok ActionResult:

    public IActionResult addlink(string link)
    {
        return Ok("/home/showlink?key="   link);
    }
 

Комментарии:

1. Имеет ли действие public IActionResult addlink(string link) атрибут [HttpPost]? Если это возможно, отправьте необработанный ответ, который вы видите в браузере.

2. я опубликовал, что для атрибута [httppost] у меня нет проблем с получением данных из ajax, у меня проблема с отправкой ответа от второго контроллера «showlink»

3. В инструменте разработки браузера проверьте ваш запрос post. Я думаю, что все работает в соответствии с вашим кодом.

4. Вы пробовали RedirectToAction , в отличие от Redirect

Ответ №2:

Если вы добавляете ajax к кнопке отправки в форме, вы должны предотвратить поведение отправки формы по умолчанию.

 <script>
    $("#btn").click(function (e) {
        e.preventDefault();
        $.ajax({
            type: "POST",
            url: "/home/addlink",
            data: {
                "link": $("#mainlink").val()
            },
            success: function (response) {
                alert(response);
            },
            error: function (xhr, status, error) {
                var err = eval("("   xhr.responseText   ")");
                alert(err.Message);
            }
        }
        )
    })
</script>