вызов ajax с помощью jquery asp.net mvc

#ajax #asp.net-mvc #model-view-controller #asp.net-ajax #actionresult

#ajax #asp.net-mvc #модель-представление-контроллер #asp.net-ajax #actionresult

Вопрос:

У меня есть кнопка с классом «btn» и диапазоном с идентификатором «ajaxtest». Когда я нажимаю на кнопку, я хочу поместить текст «test» в свой тег span. И это должно быть сделано в ASP.NET MVC.

В представлении у меня есть следующий вызов ajax:

 <span id="ajaxtest"></span>
<input type="submit" class="btn" name="neverMind" value="Test BTN"/>

    <script>
    $(document).ready(function () {
        $(".btn").click(function () {
            $.ajax({
                method: "get",
                cache: false,
                url: "/MyController/MyAction",
                dataType: 'string',
                success: function (resp) {                       
                    $("#ajaxtest").html(resp);
                }
            });
        });
    });
    </script>
  

В MyController у меня есть следующий код:

     public string MyAction()
    {
        return "test";
    }
  

Я знаю, как работает Ajax, и я знаю, как работает MVC. Я знаю, что, возможно, ошибка связана с тем, что мы ожидаем чего-то подобного в контроллере:

 public ActionResult MyAction()
    {
        if (Request.IsAjaxRequest())
        {
              //do something here
        }
        //do something else here
    }
  

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

Я хочу использовать простую функцию, которая будет возвращать только строку.

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

1. Измените $("#ajaxtest").html(resp); на $("#ajaxtest").text(resp); . Кроме того, добавьте a debugger; в функцию успеха, чтобы проверить данные, которые вы получаете с сервера.

Ответ №1:

Измените тип данных: ‘string’ на тип данных: ‘text’

 <script>
            $(document).ready(function () {
                $(".btn").click(function () {
                    $.ajax({
                        method: "get",
                        cache: false,
                        url: "/login/MyAction",
                        dataType: 'text',
                        success: function (resp) {
                            $("#ajaxtest").html(resp);
                        }
                    });
                });
            });
        </script>
  

Я проверяю его на своем локальном, он будет работать для меня

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

1. Это был ответ, который я собирался опубликовать, и он правильный.