Asp.net

對 ASP.NET 頁面方法的 Ajax GET 請求?

  • August 6, 2020

我這週遇到的一個情況:我們有一個 jQuery Ajax 呼叫,它返回到伺服器以獲取數據

$.ajax(
{
   type: "POST",
   contentType: "application/json; charset=utf-8",
   url: fullMethodPath,
   data: data,
   dataType: "json",
   success: function(response) {
       successCallback(response);
   },
   error: errorCallback,
   complete: completeCallback
});

fullMethodPath是指向頁面上靜態方法的連結(比方說/MyPage.aspx/MyMethod)。

public partial class MyPage : Page
{
   // snip

   [WebMethod]
   public static AjaxData MyMethod(string param1, int param2)
   {
       // return some data here
   }
}

這行得通,沒問題。

一位同事試圖用類型為“GET”的呼叫替換此呼叫。它壞了,我必須修理它。最終,我回到 POST,因為我們需要快速修復,但它一直困擾著我,因為在這種情況下,語義上 GET 更“正確”。

據我了解,jQuery 將數據中的對象轉換為查詢字元串:/MyPage.aspx/MyMethod?param1=value1¶m2=value2但我能得到的只是頁面的內容MyPage.aspx

這只是 Page 方法的一個“功能”,還是有辦法讓 GET 請求工作?

出於安全原因,ASP.Net AJAX 頁面方法僅支持 POST 請求。

確實,出於安全原因,ASP.NET AJAX頁面方法僅支持請求,但您可以通過使用以下兩個屬性POST裝飾您的來覆蓋此行為:WebMethod

[WebMethod]
[ScriptMethod(UseHttpGet = true)]

如果沒有指出解決方法,我覺得接受的答案是不完整的。

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