0

ページの負荷を軽減するために、負荷の高いすべてのデータベース クエリを WebMethods/Ajax から除外し始めました。

以下に例を示します。

 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 ready イベントを使用することもできます。

$(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 に答える