Вызов метода C# при нажатии кнопки с использованием JavaScript / jQuery

Я пытаюсь вызвать функцию C# нажатием кнопки с помощью функции JavaScript / jQuery.

Я прошел через похожие проблемы и их решения, но ни один из них не подходит для этого случая. Моя функция C# ничего не возвращает. Это функция, запускающая задание из планировщика задач. Есть ли другой способ написать функцию JavaScript, при которой функция ничего не возвращает?

Ниже приведен код.

HTML:

<button id = "btnClick" runat = "server" EnablePageMethods = "true">Replay</button>

JavaScript:

$(document).ready(function() {
  $(".btnClick").on('click', function() {
    $.ajax({
      async: true,
      url: "Home/ABVReplay",
      cache: false,
    });
    console.info("Replayed!");
  });
});

C#:

[WebMethod]
public void ABVReplay()
{
    using (TaskService tasksrvc = new TaskService("<server.name>", "<username>", "<domain>", "<password>"))
    {
        Task task = tasksrvc.FindTask("<taskName>");
        task.Run();
    }

}

Задание выполняется, если я просто использую код C# в консольном приложении. Таким образом, проблем с подключением / входом в систему как таковых нет.

Код консольного приложения:

using System;
using Microsoft.Win32.TaskScheduler;

class Program
{
    static void Main(string[] args)
    {
        using (TaskService tasksrvc = new TaskService("<server.name>", "<username>", "<domain>", "<password>"))
        {
            Task task = tasksrvc.FindTask("<taskName>");
            task.Run();
        }
    }
}

Какой у вас URL-адрес веб-сервиса?

D-Shih 19.07.2018 23:35

Извините, только что отредактировал URL. Home - это контроллер, а ABVReplay - это функция.

J. Raj 19.07.2018 23:43

@ D-Shih Я попробовал ваше предложение, все еще не сработало, и да, URL правильный.

J. Raj 20.07.2018 00:14

Воспользуйтесь инструментами разработчика Chrome, чтобы показать нам заголовки запросов и ответов для запроса AJAX.

mjwills 20.07.2018 00:23

Может ли программа выполняться на веб-сервере по URL-адресу при вызове по URL-адресу просмотра?

D-Shih 20.07.2018 00:23

Replayed! записывается на консоль в инструментах разработчика Chrome?

mjwills 20.07.2018 00:23

Нет, в консоли он не воспроизводится. Я также вставил точки останова в код C#, но при нажатии кнопки он даже не переходит к точке останова.

J. Raj 20.07.2018 00:27

Что ж, тогда нет смысла беспокоиться о том, почему запрос ajax не работает. Если журнал консоли не создается, значит, код обработчика событий щелчка вообще не выполняется.. Пожалуйста, запустите веб-страницу и просмотрите исходный код в веб-браузере. Найдите часть HTML, где находится кнопка Replay, скопируйте и вставьте ее в свой вопрос.

mjwills 20.07.2018 01:11

@mjwills, спасибо за это! выполнил некоторый консольный журнал и обнаружил, что событие щелчка не запущено, но теперь событие щелчка работает нормально. Я нажимаю кнопку, и появляется следующая ошибка: localhost: 57114 / Главная / Главная / ABVReplay? _ = 1532094788463 404 not found. URL-адрес должен быть локальный: 57114 / Главная / ABVReplay? _ = 1532094788463, но каким-то образом он дважды показывает Home в вызове ajax. Есть идеи, как это исправить?

J. Raj 20.07.2018 16:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
9
161
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ваш селектор jquery необходимо изменить

$("#btnClick")

вместо

$(".btnClick")

и убедитесь, что ваш URL-адрес вызова правильный.

# выберите html-тег id

. выберите html-тег class

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

. представляет собой jquery class, а # представляет собой id, вы должны заменить этот код, и он должен работать.

$(document).ready(function () {
  $("#btnClick").on('click', function () {

    $.ajax({
        async: true,
        url: "Home/ABVReplay",
        cache: false,
     });
    console.info("Replayed!");
  });
});

также попробуйте: url: "/Home/ABVReplay", Какое сообщение появляется в консоли браузера? после нажатия кнопки?

MrMins 20.07.2018 00:38

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