Chiamare un metodo lato server ASP.NET tramite jQuery

Sto provando a chiamare un metodo lato server dal lato client tramite jQuery. Il mio codice è il seguente:

Lato server:

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

Dalla parte del cliente:

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

Ho aggiunto un punto di interruzione sul metodo SendMessage sul lato server, ma non lo ha mai colpito, ma quando eseguo il codice viene chiamato il metodo di successo jQuery. Cosa potrebbe causare questo? `

Per chiamare ASP.NET AJAX “ScriptServices” e metodi di pagina, è necessario utilizzare la syntax completa $ .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. } }); 

Vedi questo post per i dettagli sul perché è necessario: http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/

Modifica: l’estensione non cambia in .asmx ma rimane .aspx.

Sembra che tu stia cercando di utilizzare un metodo di pagina.

Dai un’occhiata qui Metodi di pagina in ASP.NET Ajax per aiuto

È necessario utilizzare il servizio Web anziché la normale pagina Web di aspx. Le pagine Web non supportano i metodi web, credo che la tua richiesta jQuery carichi la pagina HTML. Ti suggerisco due cose:

  1. Usa Fiddler2 (con IE) o HttpFox (con Firefox) per eseguire il debug di richieste e risposte AJAX lato client.
  2. Utilizzare il servizio Web WCF sul lato server. in questo caso è ansible utilizzare SvcConfigEditor e SvcTraceViewer per configurare e eseguire il debug dei metodi Web sul lato server.
 $.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); } }); 

Se questo non funziona … e fornisce “Errore di syntax: errore di syntax” … quindi aggiungi questo

          

tra e nel tuo file Web.Config.

Spero che questo possa aiutare qualcuno perché mi ci è voluto un po ‘per capire che oltre alla funzione jquery devo aggiungerla in Web.Config.

Ecco il codice che potrebbe funzionare nella tua situazione.

  

C'è un esempio che ha sempre funzionato per me.

Ecco l'articolo completo http://www.webdeveloperpost.com/Articles/How-to-use-jquery-ajax-in-asp-dot-net-web-page.aspx

Funziona bene per coloro che vogliono un modo semplice di usare il richiamo del metodo jquery asp.net