Я пробовал так много примеров кодов, и ни один из них не работает. Вызов 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",
Боковое примечание: не начинайте новый проект с веб-формами asp.net. Убедитесь, что вы знаете о MVC и SPA.
И я немного сомневаюсь насчет type: "POST", разве это не GET?
@HenkHolterman Невозможно установить точки останова, так как я отправляю веб-сайт на удаленный сервер, не может быть запущен на локальном хосте. Мне уже слишком поздно начинать проекты MVC, последние несколько месяцев я изучаю веб-формы, и на данный момент у меня действительно нет времени. Пробовал с "ПОЛУЧИТЬ", тоже самое.
«не может быть запущен на локальном хосте» - в VS перейдите в File | New | Project, создайте простой тестовый проект. Он вам очень понадобится, чтобы протестировать подобные вещи. Будь проще. Ваш код уже близок к mcve, заставьте его работать. См. минимальный воспроизводимый пример
@HenkHolterman URL-адрес работает, если я, например, просто $ (document) .ready (function () {$ .ajax ({alert ('test');}); всплывающие окна с предупреждениями, Также работает mysqlcall.aspx. Сейчас я попробую создать новые проекты на локальном хосте и протестировать только запрос ajax с точками останова. Спасибо за попытку мне помочь.





Добавьте атрибут WebMethod и сделайте метод static:
[WebMethod]
public static string Testing()
{
return "asdlasldalsdl";
}
Вы также можете удалить data из вызова ajax или удалить кавычки.
Все еще не работает. Я не понимаю, код кажется безупречным, но часть ajax как будто не выполняется вообще. Может быть что-то не так с шаблоном веб-приложения VS Studio Asp.net C# по умолчанию?
Вы открыли инструменты браузера и проверили консоль на наличие ошибок?
спасибо за предложение, я совершенно забыл о консоли отладки Chrome, и я обнаружил, что вызов не был найден, мне пришлось указать полный URL-адрес вместо URL-адреса: "mysqlcall.aspx / Testing", мне пришлось использовать URL-адрес: "mywebsite / mysqlcall.aspx / Тестирование",
Это необычно. У вас на страничке есть ScriptManager? Я считать, если вы добавите такой <asp:ScriptManager runat = "server" EnablePageMethods = "true">, то вам не придется этого делать.
нет, у меня на странице нет ScriptManager. Странно то, что он искал страницу mysqlcall.aspx здесь "h * ttp: ///mywebsite.com/results/mysqlcall.apsx" results.aspx - это веб-страница, содержащая сценарий ajax и выполняющая вызов. Я счастлив, что по крайней мере сейчас работает, но все еще не оптимальное решение, поскольку у него будет задержка от преобразователя домена.
Это очень важно знать. Вероятно, вы можете просто сделать это с помощью results/mysqlcall.aspx/Testing или начального слэша /results/mysqlcall.aspx/Testing. Это не вызов каталога, это вызов url, поэтому он должен знать, куда перейти на сайт.
Хотя по вашему описанию я не могу точно сказать, где находится страница результатов. Начните с корня с косой черты и перейдите к нужному каталогу и файлу.
Извините, я не указал, результаты.aspx и mysqlcall находятся в одной папке. Results.aspx направляется на мой веб-сайт, например mywebsite.com/results/, а mysqlcall.aspx не соответствует mywebsite.com/mysqlcall.aspx /. может быть, это сделает /wwwroot/mysqlcall.aspx? я попробую.
Начните только с косой черты; вам не нужны какие-либо «www». / = root. Попробуйте url: "/mysqlcall.aspx/Testing". Это позволит вам выйти из текущего каталога и вернуться в корень (все на уровне mywebsite.com/), и он найдет mysqlcall.aspx.
Сейчас работает как задумано! :) для начала работает как с "/", так и с "../". Спасибо за ваше время и предложения.
Начать отладку: поставить точку останова в Testing (), она вызывается?