Call ASP.NET PageMethod/WebMethod with jQuery - returns whole page

63,541

Solution 1

Do you know that Page Methods are working properly? If you use the the ScriptManager do they work?

It sounds like you might be missing a web.config entry. Specifically the HttpModules section.

Solution 2

I encountered this problem again today for a different reason: I had misspelled "application" in

contentType: 'application/json'

And was getting a full-page response instead of a call to the WebMethod.

Solution 3

If you have tried all that and still get the whole page returned from your pagemethod, you may want to make sure you are not using friendly urls. If you are using them, this trick may help you

Add this line on your js script before you make the call:

PageMethods.set_path(PageMethods.get_path() + '.aspx');

Solution 4

Commenting the following line in RouteConfig.cs works for me

 settings.AutoRedirectMode = RedirectMode.Permanent;

Solution 5

Throwing this out here as a side note. I was getting that error due to the length of my string variables in my HTML string and the website I used to get my ajax called looked like this.

loc = (loc.substr(loc.length - 1, 1) == "/") ? loc + "Default.aspx" : loc;
        $.ajax({
            type: "POST",
            url: loc + "/" + methodName,
            data: "{" + args + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: onSuccess,
            error: onFail
        });

It wasn't capable of extracting the .aspx link correctly, so I just hardcoded my webpage instead of using the loc var.

Share:
63,541
Matt
Author by

Matt

C#, ASP.NET MVC, JavaScript, Ruby, and Ruby on Rails developer.

Updated on April 11, 2020

Comments

  • Matt
    Matt about 4 years

    jQuery 1.3.2, ASP.NET 2.0. Making an AJAX call to a PageMethod (WebMethod) returns the full/whole page instead of just the response. A breakpoint on the page method shows it's never getting hit. I have the [WebMethod] attribute on my method, and it is public static, returns string and accepts no params. I even tried adding [ScriptService] at the top of my class to see if it helped, but it did not.

    I have seen this post Jquery AJAX with ASP.NET WebMethod Returning Entire Page which had my same symptoms, but I am still having a problem. I read http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/ and I feel like I'm following this to the T, but still no luck.

    The jQuery call I'm making is:

    jQuery.ajax({
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        data: '{}',
        dataType: 'json',
        url: 'MyPage.aspx/SomePageMethod',
        success: function(result){
            alert(result);
        }
    });
    

    The request/response headers, as per Firebug in FF3, are as follows

    Response Headers
    Server  ASP.NET Development Server/8.0.0.0
    Date    Tue, 24 Feb 2009 18:58:27 GMT
    X-AspNet-Version    2.0.50727
    Cache-Control   private
    Content-Type    text/html; charset=utf-8
    Content-Length  108558
    Connection  Close
    
    Request Headers 
    Host    localhost:2624
    User-Agent  Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6
    Accept  application/json, text/javascript, */*
    Accept-Language en-us,en;q=0.5
    Accept-Encoding gzip,deflate
    Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive  300
    Connection  keep-alive
    Content-Type    application/json; charset=utf-8
    X-Requested-With XMLHttpRequest
    Referer http://localhost:2624/MyApp/MyPage.aspx
    Content-Length  2
    Cookie  ASP.NET_SessionId=g1idhx55b5awyi55fvorj055; 
    

    I've added a ScriptManager to my page just for kicks to see if it helped, but no luck there.

    Any suggestions?

  • Matt
    Matt about 15 years
    Dangit! I knew it was going to be something easy. I guess I assumed that any configs that would be needed would've been handled by VS when I dropped in a ScriptManager (which was why I added it, cause I knew you don't need it. Thanks!
  • John Lewin
    John Lewin almost 14 years
    Been researching this problem for an hour+ and web.config and the ScriptModule httpModule ended up being the culprit. Thanks!
  • Matt
    Matt over 13 years
    Hi Dave. Per @Surya, that link doesn't appear to work anymore.
  • Pierre
    Pierre about 6 years
    In addition to this, because of using FriendlyURLs I had to add this stackoverflow.com/a/35964882/1876355
  • DrCJones
    DrCJones over 5 years
    This is what I needed as well. I have no web.config modules. Instead of doing what @Pierre suggested, I just removed the line settings.AutoRedirectMode = RedirectMode.Permanent;