在ASPX页面中使用webmethod服务AJAX请求

我正在尝试使用.aspx页面中的方法为AJAX请求提供服务。 出于某种原因,我没有得到我想要的数据。 谁能告诉我我做错了什么?

mypage.aspx:

     Protected Sub Page_Load(sender As Object, e As System.EventArgs) End Sub  Public Function testmethod() As Integer Return 5 End Function    

JQuery的:

 $("#mybutton").click(function() { $.ajax({ type: "POST", url: "mypage.aspx/testmethod", data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(msg) { alert("success"); $("#myresults").html(msg.d); }, error: function(msg) { alert("error:" + JSON.stringify(msg)); } }); }); 

当我点击我的按钮mybutton我收到一条警告“错误:”,然后是大量的HTML说:

 Unknown web method testmethod. Parameter name: methodName 

该方法需要Shared

  Public Shared Function testmethod() As Integer Return 5 End Function 

另外,当您不使用代码隐藏文件时,我不确定是否支持页面方法。

传回的错误是什么? 您看到整个html页面的原因是因为您在代码中有错误并且正在传回的消息是完整的html,它告诉您错误的位置。 我确定如果您修复错误,那么您会没事的。

我不确定您是否期望从代码隐藏中看到错误消息。 记住 – 根据webservice方法是否成功调用,调用Ajax部分中调用的成功或错误函数。 我认为你认为你会在这里看到来自webmethod的错误消息,但实际上,如果webmethod抛出错误,那么你仍然会有一个成功的ajax调用,因此“成功”函数就是运行的那个。 “错误”function仅在整个webmethod调用失败时运行,因此服务器没有响应。

希望有道理。