2010-03-07 2 views
11

내가 이번 주에 가로 질러 상황 : 우리가 데이터ASP.NET 페이지 메서드에 Ajax GET 요청?

$.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이 페이지에 정적 메서드에 대한 링크입니다 얻기 위해 서버로 다시가는 jQuery를 Ajax 호출이 (의이 /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의 내용이었습니다.

그냥 페이지 메서드의 "기능"인가요, 아니면 GET 요청을 만드는 방법이 있습니까?

+0

정확히 무엇이 문제입니까? *로 무엇을 의미합니까?하지만 내가 얻을 수 있었던 것은 MyPage.aspx. * 페이지의 내용이었습니다. 'GET' 요청이 작동하지 않았습니까? –

+0

@ Felix : 그는 페이지 메서드를 호출하는 대신 페이지의 전체 내용을 가져 왔다는 것을 의미합니다. – SLaks

+0

@Felix : 페이지의 의미가 무엇인지 명확히했습니다. – pdr

답변

23

보안상의 이유로 ASP.Net AJAX 페이지 메서드는 POST 요청 만 지원합니다.

+0

보안 문제로 인해 메서드를 하나만 받아들이도록 작성할 수 없다고 가정합니다. – pdr

+0

무엇을 의미합니까? – SLaks

+0

일부 메서드는 POST (업데이트되기 때문에)로 제한되어야하므로 ASP.NET 용 MVC와 같은 선택적 리미터를 구현하는 대신 모든 메서드가 POST로 제한되도록 만들기가 더 쉽습니다. – pdr