2010-03-07 99 views
11

的情形我碰到这个星期跑:我们有一个jQuery的Ajax调用返回到服务器,以获得数据Ajax GET请求到ASP.NET页面方法?

$.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请求有效的方法?

+0

究竟是什么问题?你的意思是什么*但我能找回的是页面MyPage.aspx。*的内容? GET请求没有工作吗? – 2010-03-07 18:56:15

+0

@Felix:他意味着他得到了页面的全部内容,而不是调用页面方法。 – SLaks 2010-03-07 19:07:16

+0

@Felix:澄清了我的意思是由页面方法 – pdr 2010-03-07 19:08:45

回答

23

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

+0

我认为安全问题是该方法不能写入只接受一个或另一个? – pdr 2010-03-07 19:10:18

+0

你是什么意思? – SLaks 2010-03-07 19:11:53

+0

我的意思是说,因为有些方法应该限制为POST(因为它们正在更新),所以使它更容易,以便所有方法都限于POST,而不是实现像MVC for ASP.NET中的选择性限制器。 – pdr 2010-03-07 19:22:31