从Javascript调用aspx的代码隐藏中的函数引发错误

时间:2017-01-20 21:03:00

标签: javascript c# jquery asp.net

一旦窗口完全显示,我试图在我的.aspx页面的代码隐藏中调用一个函数。我尝试使用:

    <script type="text/javascript">
    $(document).ready(function () {
        PageMethods.CheckForPageChange();
    });
</script>

它会引发以下错误:

0x800a1391 - JavaScript运行时错误:&#39; $&#39;未定义

我能够window.onload显示警告框,所以我尝试使用它:

    <script type="text/javascript">
    window.onload = function () {
        PageMethods.CheckForPageChange();
    }
</script>

但它会引发错误&#34; PageMethods未定义&#34;。

我有一个&#34;形式&#34;标记:

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

这在我的代码隐藏中:

    [WebMethod]
    public void CheckForPageChange()
    {
        throw new NotImplementedException();
    }

有人可以告诉我这里缺少什么吗?非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

  

0x800a1391 - JavaScript运行时错误:'$'未定义

确保已成功加载JQuery。

  

它抛出错误“PageMethods未定义”。

1-你必须使你的服务器端方法作为静态方法看起来像这样

[WebMethod]
public static void CheckForPageChange()
{
    throw new NotImplementedException();
}

2-调用像这样的服务器端方法

<script type="text/javascript">
function OnSuccess(response){
   //Do Stuff
}
function OnError(error){
   //Do Other Stuff
}
$(document).ready(function () {
    PageMethods.CheckForPageChange(OnSuccess, OnError);
});

3-将您的脚本放在<asp:ScriptManager>之外,将其放在单独的<script>标记

答案 1 :(得分:0)

第一个错误的原因是你的aspx页面中没有包含jQuery。

正确的下一个错误是因为您没有runat="server"。尝试像这样修改ScriptManager

<asp:ScriptManager ID="ScriptManagerMain"
        runat="server"
        EnablePageMethods="true" 
        ScriptMode="Release" 
        LoadScriptsBeforeUI="true">
</asp:ScriptManager>