Reputation: 6440
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¶m2=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
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
Reputation: 887459
For security reasons, ASP.Net AJAX page methods only support POST requests.
Upvotes: 28