我正在尝试调用在我的一个 aspx 页面文件中找到的以下 webmethod:
[WebMethod]
public static string GetReportDetails()
{
var reportDetails = DataAccess.Database().GetBusinessInterestReportDetails(HttpContext.Current.User.Identity.Name);
var json = BusinessInterestReport.GetJson(reportDetails);
return json;
}
这是我用来调用 webmethod 的 javascript:
$.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);
}
});
进行此 ajax 调用的 javascript:
$('.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);
}
});
})
配置ScriptModule
已经在web.config
. 断点甚至没有在 webmethod 上被击中,而是返回了整个页面的内容。知道是什么原因造成的吗?
编辑:使用 Chrome 的调试控制台,我发现了这个错误:
[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
为什么它不选择方法名称?我还启用了 PageMethods 使用<asp:ScriptManager ID="smMain" runat="server" EnablePageMethods="true" />
PS 刚刚意识到我是从 iFrame 中调用它的。这可能与问题有关吗?