【问题标题】:In ASP.NET Web Forms, how to call a page method using "get" request在 ASP.NET Web 窗体中,如何使用“get”请求调用页面方法
【发布时间】:2016-07-26 17:30:16
【问题描述】:

在 ASP.NET Web 窗体中,我可以使用 Ajax“发布”请求调用页面方法。但我无法使用“获取请求”调用页面方法。

在这种情况下,是否可以使用“获取”请求来调用页面方法?您能否为此提供任何建议? Page 方法的示例代码:

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

【问题讨论】:

  • 当您尝试调用该方法时会发生什么?任何错误异常?
  • 您是否尝试使用 [ScriptMethod(UseHttpGet=true)] 来装饰您的方法

标签: c# asp.net ajax


【解决方案1】:

Ajax GET requests to an ASP.NET Page Method?

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

尝试使用 [ScriptMethod(UseHttpGet = true)] 装饰方法 但仍然没有命中get请求。

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

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

【讨论】:

    【解决方案2】:

    正如 @vc 在 cmets 中提到的,您需要使用 ScriptMethodAttributeWebMethod,因为您希望您的请求是 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;
    

    【讨论】:

    • 是的,它正在工作。使用旧版本的 JQuery 进行测试。对不起!
    • @Izzy,是否需要以 JSON 格式发送数据才能成功调用?我的意思是,如果您从设置中删除 contentType 会发生什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多