Вызов метода на стороне сервера ASP.NET через jQuery

Я пытаюсь вызвать метод на стороне сервера с клиентской стороны через jQuery. Мой код выглядит следующим образом:

Серверная сторона:

using System.Web.Services; [WebMethod()] //[ScriptMethod()] public static void SendMessage(string subject, string message, string messageId, string pupilId) { //Send message } 

Сторона клиента:

 $("#btnSendMessage").live("click", function(){ var subject = $("#tbSubject").val(); var message = $("#tbMessage").val(); var messageId = $("#hdnMessageId").val(); var pupilId = $("#hdnPupilId").val(); $.ajax({ type: "POST", url: "./MessagePopup.aspx/SendMessage", data: ("subject=" + subject + "&message=" + message + "&messageId=" + messageId + "&pupilId=" + pupilId), error: function(XMLHttpRequest, textStatus, errorThrown){ alert(textStatus); }, success: function(result){ alert("success"); } }); return false; }); 

Я добавил точку останова на методе SendMessage на стороне сервера, но это никогда не ударяет, но когда я запускаю код, вызывается метод jQuery success. Что может быть причиной этого?

Чтобы вызвать ASP.NET AJAX «ScriptServices» и методы страницы, вам нужно использовать полный синтаксис $ .ajax ():

 $.ajax({ type: "POST", url: "MessagePopup.aspx/SendMessage", data: "{subject:'" + subject + "',message:'" + message + ",messageId:'" + messageId + "',pupilId:'" + pupilId +"'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(msg) { // Do something interesting here. } }); 

См. Это сообщение для получения подробной информации о том, почему это необходимо: http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/

Изменить: расширение не изменяется на .asmx, но остается .aspx.

Похоже, вы пытаетесь использовать метод страницы.

См. Здесь Методы страницы в ASP.NET Ajax для справки

Вы должны использовать веб-сервис вместо обычной веб-страницы aspx. Веб-страницы не поддерживают вызовы веб-методов, я считаю, что ваш запрос jQuery загружает HTML-страницу. Я предлагаю вам две вещи:

  1. Используйте Fiddler2 (с IE) или HttpFox (с Firefox) для отладки запросов и ответов AJAX на стороне клиента.
  2. Используйте веб-службу WCF на стороне сервера. в этом случае вы можете использовать SvcConfigEditor и SvcTraceViewer для настройки и отладки веб-методов на стороне сервера.
 $.ajax({ type: "POST", url: "MessagePopup.aspx/SendMessage", data: "{subject:'" + subject + "',message:'" + message + ",messageId:'" + messageId + "',pupilId:'" + pupilId +"'}", async: true, cache: false, contentType: "application/json; charset=utf-8", dataType: "json", success: function() {}, error:function (xhr, ajaxOptions, thrownError){ alert(thrownError); } }); 

Если это не работает … и дает «Синтаксическая ошибка: синтаксическая ошибка» … затем добавьте это

          

между и в файле Web.Config.

Надеюсь, это поможет кому-то, потому что мне потребовалось некоторое время, чтобы понять, что рядом с функцией jquery я должен добавить это в Web.Config.

Вот код, который может работать в вашей ситуации.

  

Есть пример, который всегда работает для меня.

Вот полная статья http://www.webdeveloperpost.com/Articles/How-to-use-jquery-ajax-in-asp-dot-net-web-page.aspx

Это хорошо работает для тех, кто хочет прямолинейный способ использования метода jquery asp.net call back

  • Почему мой веб-сервис WCF представляет этот объект в другом пространстве имен с разными именами полей?
  • Лучший способ вызова JSON WebService из .NET Console
  • Возврат сервиса WCF «Метод не разрешен»
  • Как использовать Джерси как реализацию JAX-RS без web.xml?
  • Вызов ASP.NET PageMethod / WebMethod с помощью jQuery - возвращает всю страницу
  • JAX-WS = Когда Apache CXF установлен, он «крадет» стандартную реализацию JDK JAX-WS по умолчанию, как ее решить?
  • Как передать массив JSON в качестве параметра в URL-адресе
  • asp.net asmx веб-сервис возвращает xml вместо json
  • Клиент службы WCF: текст типа контента / html; charset = utf-8 ответного сообщения не соответствует типу содержимого привязки
  • Как вернуть JSON из веб-службы 2.0 asmx
  • Каков правильный способ отправки файла из веб-сервиса REST клиенту?
  • Давайте будем гением компьютера.