Asp.net
通過 jQuery 呼叫 ASP.NET 伺服器端方法
我正在嘗試通過 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 成功方法。是什麼原因造成的?
要呼叫 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。