在ASP.NET Web窗体中,如何使用" get"来调用页面方法。请求

时间:2016-04-06 10:54:11

标签: c# asp.net ajax

在ASP.NET Web窗体中,我可以使用Ajax调用页面方法" post"请求。但我无法使用" get request"。

来调用页面方法

在这种情况下,是否可以使用" Get"来调用页面方法。请求。你能提出任何建议吗? 页面方法的示例代码:

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

2 个答案:

答案 0 :(得分:11)

正如@vc在评论中提到的那样,您需要使用ScriptMethodAttribute以及WebMethod,因为您希望自己的请求为GET而非{{1}所以改变你的代码如下:

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()" />

答案 1 :(得分:3)

Ajax GET requests to an ASP.NET Page Method?

我猜这个链接很有用。它说出于安全原因,ASP.Net AJAX页面方法仅支持POST请求。

尝试用[ScriptMethod(UseHttpGet = true)]装饰方法 但仍然没有点击获取请求。

[ScriptMethod(UseHttpGet = true)]的msdn doc 引号当此属性设置为true时,客户端代理代码使用HTTP GET来调用Web服务。不确定它是否适用于Web表单中的Web方法。

P.S :似乎可以使用较新版本的Jquery 2.2.2。另外请确保通过查询字符串发送数据,而不是像POST方法那样使用请求体。

相关问题