未捕获的参考错误:未定义函数(ASP.NET)

时间:2017-08-17 01:22:11

标签: javascript c# asp.net

我自学了如何使用ASP.NET,并且我试图在我的.aspx文件中调用JS函数中的C#函数。

这是我的JS部分:

<script type="text/javascript">
        function Run() {
        alert("Running!")
        var ranking = parseInt(document.getElementById("rank").value);
        var collsize = parseInt(document.getElementById("size").value);
        var collsafety = 
           parseInt(document.getElementById("safety").value);
        var best = PageMethods.Survey(ranking, collsize, collsafety);
        document.write(best);
    }
</script>

C#函数的签名(它嵌入在.aspx文件中,就像JS函数一样):

<script language="c#">
    [System.Web.Services.WebMethod]
    public static string Survey(int ranking, int collsize, int 
       collsafety) {
       ....
    }

确切的错误消息是:未捕获的ReferenceError:未定义PageMethods.Survey。

我使用onclick按钮调用Run方法。我知道输入了该方法,因为第一个警报发生了。但是,当我尝试调用Survey时,我收到错误。

我已经阅读了几个答案,例如:jquery PageMethod saying the method does not exist,但建议的AJAX也没有用。我也读过这个:https://www.codeproject.com/Questions/561226/errorpluspageMethodplusisplusundefined但我无法看到我做得不对......

1 个答案:

答案 0 :(得分:0)

由于您将c#代码直接嵌入到aspx文件中,因此您的代码将无法运行。将其嵌入到aspx.cs文件中:

protected void Page_Load(object sender, EventArgs e)
    {

    }

[System.Web.Services.WebMethod]
public static string Survey(int ranking, int collsize, int 
   collsafety) 
  {
     return "Hello";
  }

您可以通过PageMethods调用它:

    <script type="text/javascript">

        function Run() {
        var ranking = 123;
        var collsize = 123;
        PageMethods.Survey(ranking, collsize, onSucess, onError);

        function onSucess(result) {
            alert(result);
        }

        function onError(result) {
            alert('Please contact administrator.');
        }
    }
</script>

最后不要忘记在调用页面上添加ScriptManager(在我的示例中为Default.aspx)并启用PageMethods为True:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="True">
</asp:ScriptManager>

以下是进一步参考的样子:

enter image description here

我在按钮上调用脚本时的代码:

 <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="Run()" />