$ .hubConnection未定义

时间:2015-02-04 20:33:38

标签: signalr

我使用的是SignalR 2.2.0版。使用下面的代码,我得到一个例外,说明$没有定义hubConnection。我知道我的脚本路径是正确的,因为我可以在signalr脚本中设置断点并看到它们被击中。我甚至超越了定义hubConnection功能的地方,但我仍然得到了异常。我做错了什么?

<script type="text/javascript" src="~/scripts/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="~/scripts/jquery.signalR-2.2.0.js"></script>
<script type="text/javascript">
    $(function() {
        initAvailabilitySignalR("D420A92E163C43AB85CE342D5C10106B");
    });

    function initAvailabilitySignalR(tenantId) {
        try {
            var connection = $.hubConnection();

            var proxy = connection.createHubProxy('SignalRHub');

            proxy.on('AvailabilityChangedNotification', function(message) {
                try {
                    alert(message.UserId + " changed from " + message.OldAvailabilityId + " to " + message.NewAvailabilityId);
                } catch(ex) {
                    alert("Exception[On]: " + ex);
                }
            });

            connection.start().done(function() {
                try {
                    proxy.invoke("Connect", tenantId, "SOMEDOMAIN\\someuser");
                } catch(ex) {
                    alert("Exception: " + ex);
                }
            });
        } catch(ex) {
            alert("Exception: " + ex);
        }
    };
</script>

3 个答案:

答案 0 :(得分:2)

我发现了问题。我忘了ASP.NET MVC在页面底部呈现JQuery。我将该render语句移到了页面顶部,并从视图中删除了我对JQuery的显式声明,现在它可以正常工作。

答案 1 :(得分:0)

您还需要将SignalR的此脚本标记包括在内:

<script src="~/signalr/hubs"></script>

答案 2 :(得分:0)

我自己找到了解决方案;),我将jquery.signalR-2.4.1.js和〜/ signalr / hubs作为头部分中的最后一个js文件,但它无法正常工作,如果把它放在哪里,可能是什么问题紧接在jquery之后,它们将beofre jquery加载到系统中。