如何确保执行JavaScript方法?

时间:2013-10-10 11:11:32

标签: javascript asp.net

为了减少我的页面的负载,我开始将所有重载数据库查询排除到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事件的内容,但是不知道确切的区别和哪个适合我!

请帮帮我:)。

2 个答案:

答案 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