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

Fla*_*ash 5 vb.net jquery asp.net-ajax asp.net-3.5 webmethod

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

mypage.aspx:

<%@ Page Language="VB" Title="My Page" %>
<%@ Import Namespace="System.Web.Services" %>
<%@ Import Namespace="System.Collections.Generic" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    Protected Sub Page_Load(sender As Object, e As System.EventArgs)

    End Sub

    <WebMethod()> Public Function testmethod() As Integer
        Return 5
    End Function

</script>

<html>
<!--...rest of page including mybutton and myresults-->
Run Code Online (Sandbox Code Playgroud)

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));
      }
    });
});
Run Code Online (Sandbox Code Playgroud)

当我点击时,mybutton我收到警告"错误:",然后是大量的HTML,上面写着:

Unknown web method testmethod.
Parameter name: methodName 
Run Code Online (Sandbox Code Playgroud)

Dav*_*ard 12

该方法需要Shared:

<WebMethod()> Public Shared Function testmethod() As Integer
    Return 5
End Function
Run Code Online (Sandbox Code Playgroud)

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

  • 要添加 - 在C#中 - 它必须是"静态" (2认同)