在ASP.NET Web窗體中,我能夠使用Ajax「post」請求調用頁面方法。但我無法使用「獲取請求」來調用頁面方法。在ASP.NET Web窗體中,如何使用「獲取」請求調用頁面方法
在這種情況下,是否可以使用「獲取」請求調用頁面方法?請提供任何建議嗎? 示例代碼頁方法:
[WebMethod]
public static string GetData()
{
return "test";
}
在ASP.NET Web窗體中,我能夠使用Ajax「post」請求調用頁面方法。但我無法使用「獲取請求」來調用頁面方法。在ASP.NET Web窗體中,如何使用「獲取」請求調用頁面方法
在這種情況下,是否可以使用「獲取」請求調用頁面方法?請提供任何建議嗎? 示例代碼頁方法:
[WebMethod]
public static string GetData()
{
return "test";
}
正如在評論中提到@vc你需要利用ScriptMethodAttribute
的以及WebMethod
因爲你希望你的請求被GET
而不是POST
那麼改變你的代碼如下:
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public static string GetData()
{
return "test";
}
而在標記,你可以做
function ShowTestMessage() {
$.ajax({
type: "GET",
url: "YourPage.aspx/GetData",
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function (response) {
alert(response.d);
}
});
}
function OnSuccess(response) {
alert(response.d);
}
<input id="ButtonId" type="button" value="Show Message"
onclick = "ShowTestMessage()" />
不要忘了添加下列引用
using System.Web.Script.Services;
using System.Web.Services;
Ajax GET requests to an ASP.NET Page Method?
我猜的鏈接將是有益的。它說出於安全原因,ASP.Net AJAX頁面方法僅支持POST請求。
用[ScriptMethod(UseHttpGet = true)] 嘗試裝飾該方法,但仍未獲取獲取請求。
而且在MSDN文檔爲[ScriptMethod(UseHttpGet =真)] 報價當此屬性設置爲true,則客戶端代理代碼使用HTTP GET來調用Web服務。不確定它是否適用於web表單中的webmethod。
P.S:好像可以使用新版本的Jquery 2.2.2。另外請確保您通過查詢字符串發送數據,而不是使用POST方法中的請求主體。
雖然使用[ScriptMethod(UseHttpGet = true)]
,我可以使用「獲取」請求調用頁面方法,但現在它可以防止「發佈」。
我們有什麼方法可以使用請求類型「post」和「get」來調用頁面方法「GetData」嗎? 注意:我必須爲「發佈」和「獲取」請求使用相同的方法名稱「GetData」。
當您嘗試調用該方法時會發生什麼?任何錯誤異常? – Izzy
你嘗試用[ScriptMethod(UseHttpGet = true)]來裝飾你的方法嗎? –