Asp.net

通過 jQuery 呼叫 ASP.NET 伺服器端方法

  • May 20, 2009

我正在嘗試通過 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。

引用自:https://stackoverflow.com/questions/886903