Draco Draco - 4 months ago 19
Ajax Question

Why is this AJAX call returning the entire page contents?

I am trying to call the following webmethod found in one of my aspx page files:

[WebMethod]
public static string GetReportDetails()
{
var reportDetails = DataAccess.Database().GetBusinessInterestReportDetails(HttpContext.Current.User.Identity.Name);
var json = BusinessInterestReport.GetJson(reportDetails);
return json;
}


And this is the javascript that i'm using to call the webmethod:

$.ajax({
type: 'POST',
url: 'SummaryReport.aspx/GetReportDetails',
dataType: 'json',
success: function (data) {
alert(data);
},
error: function (jqXHR, textStatus, errorThrown) {
alert('An error has occured: ' + errorThrown);
}
});


The javascript that makes this ajax call:

$('.reportOption').click(function (e) {
$.ajax({
type: 'POST',
url: 'SummaryReport.aspx/GetReportDetails',
dataType: 'json',
success: function (data) {
alert(data);
},
error: function (jqXHR, textStatus, errorThrown) {
alert('An error has occured: ' + errorThrown);
}
});
})


The
ScriptModule
config is already in the
web.config
. The break point is not even getting hit on the webmethod and the entire page's content is returned. Any idea what's causing this?

EDIT:
Using Chrome's debug console I found this error:

[ArgumentException: Unknown web method GetReportDetails.
Parameter name: methodName]
System.Web.Script.Services.WebServiceData.GetMethodData(String methodName) +516665
System.Web.Handlers.ScriptModule.OnPostAcquireRequestState(Object sender, EventArgs eventArgs) +168
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75


Why would it not pick up the method name? I've also enabled PageMethods using
<asp:ScriptManager ID="smMain" runat="server" EnablePageMethods="true" />


P.S. Just realized that i'm calling it from within an iFrame. Could this have anything to do with the issue?

Answer

Fixed it. It turns out that the inherits attribute was missing at the top of the aspx file.

So now I have:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SummaryReport.aspx.cs" MasterPageFile="~/MasterPages/SummaryReports.Master"
Inherits="Web.SummaryReport"
    %>
Comments