Запрос Ajax не работает с методом страницы ASP.NET

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

Это код ajax:

<script src = "Scripts/jquery-1.10.2.js" type = "text/javascript"></script>
<script type = "text/javascript"> 
    $(document).ready(function() {
        $.ajax({         
            type: "POST",
            url: "mysqlcall.aspx/Testing",
            contentType: "application/json; charset=utf-8",
            data: {""},
            dataType: "json",
            success: function (data) {
                alert("idkbro");
                //  $("#testing").text(response.d);
            },
            failure: function (response) {
                alert(response.d);
            }
        });
    });
</script>

А это страница звонка:

public partial class mysqlcall : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {    
    }

    public string Testing()
    {
        return "asdlasldalsdl";
    }
}

Я запускаю его в последней версии IIS и использую веб-формы asp.net C# с маршрутизацией. mysqlcall.aspx не маршрутизируется, но это не имеет значения, я пробовал его с маршрутизируемой страницей. Любая помощь будет оценена по достоинству.

Обновлено: благодаря @wazz проблема была в

url: "mysqlcall.aspx/Testing",

вместо этого он должен начинаться с косой черты, например:

url: "/mysqlcall.aspx/Testing",

Начать отладку: поставить точку останова в Testing (), она вызывается?

Henk Holterman 13.06.2018 23:24

Боковое примечание: не начинайте новый проект с веб-формами asp.net. Убедитесь, что вы знаете о MVC и SPA.

Henk Holterman 13.06.2018 23:26

И я немного сомневаюсь насчет type: "POST", разве это не GET?

Henk Holterman 13.06.2018 23:27

@HenkHolterman Невозможно установить точки останова, так как я отправляю веб-сайт на удаленный сервер, не может быть запущен на локальном хосте. Мне уже слишком поздно начинать проекты MVC, последние несколько месяцев я изучаю веб-формы, и на данный момент у меня действительно нет времени. Пробовал с "ПОЛУЧИТЬ", тоже самое.

Angelica Adams 13.06.2018 23:32

«не может быть запущен на локальном хосте» - в VS перейдите в File | New | Project, создайте простой тестовый проект. Он вам очень понадобится, чтобы протестировать подобные вещи. Будь проще. Ваш код уже близок к mcve, заставьте его работать. См. минимальный воспроизводимый пример

Henk Holterman 13.06.2018 23:41

@HenkHolterman URL-адрес работает, если я, например, просто $ (document) .ready (function () {$ .ajax ({alert ('test');}); всплывающие окна с предупреждениями, Также работает mysqlcall.aspx. Сейчас я попробую создать новые проекты на локальном хосте и протестировать только запрос ajax с точками останова. Спасибо за попытку мне помочь.

Angelica Adams 13.06.2018 23:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
549
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Добавьте атрибут WebMethod и сделайте метод static:

[WebMethod]
public static string Testing()
{
    return "asdlasldalsdl";
}

Вы также можете удалить data из вызова ajax или удалить кавычки.

Все еще не работает. Я не понимаю, код кажется безупречным, но часть ajax как будто не выполняется вообще. Может быть что-то не так с шаблоном веб-приложения VS Studio Asp.net C# по умолчанию?

Angelica Adams 14.06.2018 01:20

Вы открыли инструменты браузера и проверили консоль на наличие ошибок?

wazz 14.06.2018 01:22

спасибо за предложение, я совершенно забыл о консоли отладки Chrome, и я обнаружил, что вызов не был найден, мне пришлось указать полный URL-адрес вместо URL-адреса: "mysqlcall.aspx / Testing", мне пришлось использовать URL-адрес: "mywebsite / mysqlcall.aspx / Тестирование",

Angelica Adams 14.06.2018 02:06

Это необычно. У вас на страничке есть ScriptManager? Я считать, если вы добавите такой <asp:ScriptManager runat = "server" EnablePageMethods = "true">, то вам не придется этого делать.

wazz 14.06.2018 02:24

нет, у меня на странице нет ScriptManager. Странно то, что он искал страницу mysqlcall.aspx здесь "h * ttp: ///mywebsite.com/results/mysqlcall.apsx" results.aspx - это веб-страница, содержащая сценарий ajax и выполняющая вызов. Я счастлив, что по крайней мере сейчас работает, но все еще не оптимальное решение, поскольку у него будет задержка от преобразователя домена.

Angelica Adams 14.06.2018 02:57

Это очень важно знать. Вероятно, вы можете просто сделать это с помощью results/mysqlcall.aspx/Testing или начального слэша /results/mysqlcall.aspx/Testing. Это не вызов каталога, это вызов url, поэтому он должен знать, куда перейти на сайт.

wazz 14.06.2018 03:04

Хотя по вашему описанию я не могу точно сказать, где находится страница результатов. Начните с корня с косой черты и перейдите к нужному каталогу и файлу.

wazz 14.06.2018 03:11

Извините, я не указал, результаты.aspx и mysqlcall находятся в одной папке. Results.aspx направляется на мой веб-сайт, например mywebsite.com/results/, а mysqlcall.aspx не соответствует mywebsite.com/mysqlcall.aspx /. может быть, это сделает /wwwroot/mysqlcall.aspx? я попробую.

Angelica Adams 14.06.2018 03:23

Начните только с косой черты; вам не нужны какие-либо «www». / = root. Попробуйте url: "/mysqlcall.aspx/Testing". Это позволит вам выйти из текущего каталога и вернуться в корень (все на уровне mywebsite.com/), и он найдет mysqlcall.aspx.

wazz 14.06.2018 03:29

Сейчас работает как задумано! :) для начала работает как с "/", так и с "../". Спасибо за ваше время и предложения.

Angelica Adams 14.06.2018 03:32

Другие вопросы по теме