2017-08-17 109 views
0

我在教自己如何使用ASP.NET,我试图在.aspx文件中的JS函数中调用C#函数。未捕获的参考错误:函数未定义(ASP.NET)

这里是我的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#函数的签名(它嵌入在像JS功能.aspx文件):

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

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

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

我已经阅读了几个答案,像这样:jquery PageMethod saying the method does not exist,但建议的AJAX也没有工作。我也读过这个:https://www.codeproject.com/Questions/561226/errorpluspageMethodplusisplusundefined但我看不到我没做对的东西...

回答

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> 

最后别忘了在调用页面(Default.aspx的在我的例子中添加的ScriptManager ),使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()" /> 
+0

其实我切换到AJAX,现在它不扔特定的错误(我没有做正确的AJAX第一次)。但现在我得到一个POST 404 Not Found错误:( –

+0

你可以用AJAX做到这一点,但我简化了我的解释,因为你问如何调用js函数上的c# –

+0

谢谢你知道什么可能导致AJAX错误,在任何机会?(代码在下一个评论 - 对格式化的歉意) –

相关问题