Aufrufen einer serverseitigen ASP.NET-Methode über jQuery

Ich versuche, eine serverseitige Methode von Clientseite über jQuery aufzurufen. Mein Code ist wie folgt:

Serverseite:

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

Kundenseite:

 $("#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; }); 

Ich habe einen Breakpoint auf der serverseitigen SendMessage-Methode hinzugefügt, aber er trifft ihn nie, aber wenn ich den Code ausführe, wird die jQuery-Erfolgsmethode aufgerufen. Was könnte das verursachen?

Um ASP.NET AJAX “ScriptServices” und Seitenmethoden aufzurufen, müssen Sie die vollständige Syntax $ .ajax () verwenden:

 $.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. } }); 

In diesem Beitrag finden Sie Details darüber, warum das erforderlich ist: http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/

Bearbeiten: Die Erweiterung ändert sich nicht in .asmx, sondern bleibt .aspx.

Es sieht so aus, als ob Sie versuchen, eine Seitenmethode zu verwenden.

Sehen Sie sich hier die Seite Methoden in ASP.NET Ajax an, um Hilfe zu erhalten

Sie sollten den Web-Service anstelle der regulären Aspx-Webseite verwenden. Webseiten haben keine Unterstützung, um Webmethoden aufzurufen. Ich glaube, dass Ihre jQuery-Anfrage stattdessen die HTML-Seite lädt. Ich schlage dir zwei Dinge vor:

  1. Verwenden Sie Fiddler2 (mit IE) oder HttpFox (mit Firefox), um AJAX-Anfragen und -Antworten auf der Clientseite zu debuggen.
  2. Verwenden Sie den WCF-Webdienst auf der Serverseite. In diesem Fall können Sie SvcConfigEditor und SvcTraceViewer verwenden, um Webmethoden auf der Serverseite zu konfigurieren und zu debuggen.
 $.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); } }); 

Wenn das nicht funktioniert … und “Syntax Error: syntax error” gibt … dann füge das hinzu

          

zwischen und in Ihrer Web.Config-Datei.

Hoffe, das wird jemandem helfen, weil ich eine Weile gebraucht habe, um herauszufinden, dass ich neben der jquery-function das in Web.Config hinzufügen muss.

Hier ist Code, der in Ihrer Situation funktionieren könnte.

  

Es gibt ein Beispiel, das immer für mich funktioniert hat.

Hier ist der komplette Artikel http://www.webdeveloperpost.com/Articles/How-to-use-jquery-ajax-in-asp-dot-net-web-page.aspx

Es funktioniert gut für diejenigen, die eine direkte Art und Weise der Verwendung der jquery asp.net Methode callback wollen