pdr
pdr

Reputation: 6440

Ajax GET requests to an ASP.NET Page Method?

A situation I ran across this week: we have a jQuery Ajax call that goes back to the server to get data

$.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 is a link to a static method on a page (let's say /MyPage.aspx/MyMethod).

public partial class MyPage : Page
{
    // snip

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

This works, no problem.

A colleague had attempted to replace this call with one where type was "GET". It broke, I had to fix it. Eventually, I went back to POST because we needed the fix quick, but it has been bugging me because semantically a GET is more "correct" in this case.

As I understand it, jQuery translates an object in data to a Query String: /MyPage.aspx/MyMethod?param1=value1&param2=value2 but all I could get back was the content of the page MyPage.aspx.

Is that just a "feature" of Page methods, or is there a way of making a GET request work?

Upvotes: 11

Views: 14241

Answers (2)

Jamshaid K.
Jamshaid K.

Reputation: 4547

It is true that ASP.NET AJAX page methods only support POST requests for security reasons but you can override this behavior by decorating your WebMethod with this these both attribute:

[WebMethod]
[ScriptMethod(UseHttpGet = true)]

I felt that the accepted answer was incomplete without pointing out a work around.

Upvotes: 1

SLaks
SLaks

Reputation: 887459

For security reasons, ASP.Net AJAX page methods only support POST requests.

Upvotes: 28

Related Questions