一旦窗口完全显示,我试图在我的.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();
}
有人可以告诉我这里缺少什么吗?非常感谢任何帮助!
答案 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>