0

为了减少我的页面的负载,我开始排除对 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 次加载中,有 1 次 JavaScript 找不到方法,所以我得到了一个 PageMethod "UpdateOnlineList" not found-error 并且没有加载任何内容。我希望会发生这种情况,当浏览器出现故障并且当 JS 尝试执行查询时没有正确加载 PageMethods 时。

那么,在方法在这里之后执行我的 JS 时如何保证安全?我阅读了很多关于 JavaScript-PageLoad-Event 或 Application Ready 事件的信息,但不知道确切的区别以及哪个适合我!

请帮我 :)

4

2 回答 2

0

您可以尝试使用不带 ScriptManager 的页面方法,而改用 jQuery。这样你也可以使用 jQuery 就绪事件。

$(document).ready(function() {
   $.get( "PageName.aspx/UpdateOnlineList", callbacksuccessOnline)
   .fail(callbackfail);
});

关于这个线程有更多信息,但它有点过时了: Calling a webmethod with jquery in asp.net webforms

于 2013-10-10T12:33:19.427 回答
0

只需在触发之前检查该方法是否存在

checkIfExists();

function checkIfExists()
{
    if ( PageMethods.UpdateOnlineList )
    {
       PageMethods.UpdateOnlineList(callbacksuccessOnline, callbackfail);
    }
    else
    {
       setTimout( checkIfExists , 1000 );
    }
}
于 2013-10-10T11:14:16.900 回答