Ajax-вызов не затрагивает код метода c # - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть вызов jQuery ajax

 <script type="text/javascript">
        $(document).ready(function () {
            $('#MainContent_minuteBooks').click(function (e) {

                e.preventDefault();

                $.ajax({
                    type: "GET",
                    url: "MainView.aspx/GetPageTypes",
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        console.log("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
                    },
                    success: function (response) {
                        console.log("--" + JSON.stringify(response));
                    }
                });

            });
        });
    </script>

Это должно вызвать мой код WebMethod

        [WebMethod]
        public static string GetPageTypes()
        {
            List<string> pages = new List<string>();
            string html = "";
            Console.WriteLine(book.Count);


            foreach(MinuteBookPage mbp in book)
            {
                if (!pages.Contains(mbp.Class)) { pages.Add(mbp.Class); };
            }

            foreach(string s in pages)
            {
                html += "<div class='page' style='border: solid 2px red'><p>" + s + "</p></div>";
            }
            Console.WriteLine(html);

            return html;

        }

У меня установлены точки останова для метода, а также Console.WriteLine это должно отображаться, точки останова не достигнуты, и консоль ничего не выводит

Я считаю, что мой метод не вызывается

На вкладке сети это отображается, Первый вызов , после этого ответа 301 происходит второй вызов, и он просто возвращает страницу html / javascript

В случае успеха вызов ajax возвращает разметку html и JavaScript для страницы i.Я нахожусь на

Я смотрел на эту ссылку Pagemethods в asp.net , но он кажется устаревшим, и все другие ресурсы, на которые я смотрел, похоже, не следуют тому, что обрисовано в общих чертах

1 Ответ

0 голосов
/ 24 сентября 2019

Спасибо @Dortimer за указание на этот пост и помощь в решении проблемы.

Как правильно сделать вызов ajax с помощью веб-форм

Iв итоге получил следующий код

Ajax call

<script type="text/javascript">
        $(document).ready(function () {
            $('#MainContent_minuteBooks').click(function () {
                console.log("inside click");

                $.ajax({
                    type: 'POST',
                    url: '<%= ResolveUrl("~/MainView.aspx/GetPageTypes") %>',
                    data: '{ }',
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    success: function (msg) {
                        console.log(msg)
                    }
                });
                return false;
            });
        });
    </script>

Также мне пришлось отключить RedirectMode внутри RouteConfig.cs файла

        public static void RegisterRoutes(RouteCollection routes)
        {
            var settings = new FriendlyUrlSettings();
            settings.AutoRedirectMode = RedirectMode.Off;
            routes.EnableFriendlyUrls(settings);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...