为了减少我的页面的负载,我开始将所有重载数据库查询排除到WebMethods / Ajax,所以有例如一个10秒的静坐状态,0.5秒的静止状态和9.5秒的加载屏幕。
这是一个例子: 之前:
protected void Page_Load(object sender, EventArgs e)
{
//Do Heavy load query which takes long
}
后:
<script type="text/javascript">
function getOnlineList() {
PageMethods.UpdateOnlineList(callbacksuccessOnline, callbackfail);
}
</script>
目前效果很好。 但我有一个问题,在我的网站的10个加载中,JavaScript没有找到方法,所以我得到了一个PageMethod“UpdateOnlineList”not found-error并且没有加载任何内容。 我希望当浏览器出现打嗝并且当JS试图执行查询时没有正确加载PageMethods时会发生这种情况。
那么,如何保证我的JS是安全的,在这些方法之后执行? 我读了很多关于JavaScript-PageLoad-Event或Application Ready事件的内容,但是不知道确切的区别和哪个适合我!
请帮帮我:)。
答案 0 :(得分:0)
在开火前检查方法是否存在
checkIfExists();
function checkIfExists()
{
if ( PageMethods.UpdateOnlineList )
{
PageMethods.UpdateOnlineList(callbacksuccessOnline, callbackfail);
}
else
{
setTimout( checkIfExists , 1000 );
}
}
答案 1 :(得分:0)
您可以尝试使用不带ScriptManager的页面方法,而是使用jQuery。这样你也可以使用jQuery ready事件。
$(document).ready(function() {
$.get( "PageName.aspx/UpdateOnlineList", callbacksuccessOnline)
.fail(callbackfail);
});
有关此主题的更多信息,但它有点过时了: Calling a webmethod with jquery in asp.net webforms