Ajax GET请求ASP.NET页面方法?

时间:2010-03-07 18:50:06

标签: asp.net jquery ajax post get

本周我遇到的一种情况:我们有一个jQuery Ajax调用,可以回到服务器来获取数据

$.ajax(
{
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: fullMethodPath,
    data: data,
    dataType: "json",
    success: function(response) {
        successCallback(response);
    },
    error: errorCallback,
    complete: completeCallback
});

fullMethodPath是指向页面上静态方法的链接(假设为/MyPage.aspx/MyMethod)。

public partial class MyPage : Page
{
    // snip

    [WebMethod]
    public static AjaxData MyMethod(string param1, int param2)
    {
        // return some data here
    }
}

这样有效,没问题。

一位同事试图用类型为“GET”的那个替换这个电话。它坏了,我不得不解决它。最后,我回到了POST,因为我们需要快速修复,但它一直在困扰我,因为在这种情况下语义上GET更“正确”。

据我了解,jQuery将数据中的对象转换为查询字符串:/MyPage.aspx/MyMethod?param1=value1&param2=value2但我可以获得的只是页面内容MyPage.aspx

这只是Page方法的“功能”,还是有办法让GET请求有效?

2 个答案:

答案 0 :(得分:24)

出于安全原因,ASP.Net AJAX页面方法仅支持POST请求。

答案 1 :(得分:0)

的确,出于安全原因,ASP.NET AJAX页方法仅支持POST请求,但是您可以通过以下两个属性来修饰WebMethod来覆盖此行为:

[WebMethod]
[ScriptMethod(UseHttpGet = true)]

我认为接受的答案是不完整的,没有指出解决方法。

相关问题