在ASP.NET Web窗体中,我可以使用Ajax调用页面方法" post"请求。但我无法使用" get request"。
来调用页面方法在这种情况下,是否可以使用" Get"来调用页面方法。请求。你能提出任何建议吗? 页面方法的示例代码:
[WebMethod]
public static string GetData()
{
return "test";
}
答案 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方法那样使用请求体。