2016-04-06 35 views
6

在ASP.NET Web窗體中,我能夠使用Ajax「post」請求調用頁面方法。但我無法使用「獲取請求」來調用頁面方法。在ASP.NET Web窗體中,如何使用「獲取」請求調用頁面方法

在這種情況下,是否可以使用「獲取」請求調用頁面方法?請提供任何建議嗎? 示例代碼頁方法:

[WebMethod] 
    public static string GetData() 
    {    
     return "test"; 
    } 
+1

當您嘗試調用該方法時會發生什麼?任何錯誤異常? – Izzy

+1

你嘗試用[ScriptMethod(UseHttpGet = true)]來裝飾你的方法嗎? –

回答

9

正如在評論中提到@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; 
+0

你調試過代碼嗎?它工作嗎? –

+0

@DilipNandakumar是的,它在我的開發機器上工作 – Izzy

+0

是的,它的工作。使用舊版本的JQuery進行測試。對不起,這個! –

3

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方法中的請求主體。

0

雖然使用[ScriptMethod(UseHttpGet = true)],我可以使用「獲取」請求調用頁面方法,但現在它可以防止「發佈」。

我們有什麼方法可以使用請求類型「post」和「get」來調用頁面方法「GetData」嗎? 注意:我必須爲「發佈」和「獲取」請求使用相同的方法名稱「GetData」。

相關問題