Asp.net
對 ASP.NET 頁面方法的 Ajax GET 請求?
我這週遇到的一個情況:我們有一個 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.NETAJAX頁面方法僅支持請求,但您可以通過使用以下兩個屬性POST裝飾您的來覆蓋此行為:WebMethod[WebMethod] [ScriptMethod(UseHttpGet = true)]如果沒有指出解決方法,我覺得接受的答案是不完整的。