0

レイアウトと部分ページで SignalR ハブを使用したいと考えています。ここhub.startでは、使用方法とdone機能について説明します。

したがって、SignalR を使用する html ページに 2 つのスクリプト ブロックがあります。

<script>
    $(document).ready(function () {
        window.hubReady = $.connection.hub.start();
        window.hubReady.done(function () {
            ...
        });
</script>

<script>
    $(document).ready(function(e) {
        window.hubReady.done(function() {
            ...
        });
    });
</script>

2 番目のスクリプト ブロックでは、windows.hubReady.done未定義のため実行できないと書かれています。

編集: ブロック 2 はブロック 1 の前に実行されます。しかし、なぜですか?

4

2 に答える 2

2

私の推測では、最初のコールバックの前に 2 番目のコールバックが実行されます。その場合、window.hubReady を初期化するのは最初のコールバックであるため、window.hubReady は null です。

ハブへのグローバル参照を作成せず、代わりに直接参照することをお勧めします。

<script>
    $(document).ready(function(e) {
        $.connection.hub.connected(function() {
            ...
        });
    });
</script>

(これが機能しない場合は、「ハブ」という名前のハブがサーバーで定義されていないと思われますが、それは別の問題です)

于 2013-02-25T11:23:48.360 に答える
0

呼び出すのでは$(document).ready(function(e)なく $(window).load(function()、部分的なhtmlで問題を解決しました。 $(window).load(function()は次に呼び出されます。

于 2013-02-25T15:27:40.287 に答える