首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SignalR:未定义$.connection

SignalR:未定义$.connection
EN

Stack Overflow用户
提问于 2012-06-25 01:31:22
回答 8查看 20.4K关注 0票数 20

我在一个MVC4应用程序中使用Visual Studio2012 Ultimate RC、SignalR 0.5.1和jQuery1.7.2。

我看过:MVC4 SignalR "signalr/hubs" 501 Not Implemented Error

但这并不影响我的问题(我正在使用IIS Express进行调试)。

当我尝试使用SignalR时,$.connection变量未定义。我的服务器端代码:

代码语言:javascript
复制
[HubName("tenantHub")]
public class TenantHub : Hub
{
    ...
    void TenantChange(CrudAction action, Tenant tenant)
    {
        Clients.eventOccurred(action.ToString(), tenant);
    }
}

客户端:

代码语言:javascript
复制
$(function() { var test = $.connection.tenantHub; });

客户端SignalR/hubs被引用,我可以看到JS代码,它没有抛出任何错误。但是引用$.connection会抛出Uncaught TypeError: Cannot read property 'tenantHub' of undefined。我也尝试做了默认的聊天示例,它给出了同样的错误。在VS2012中使用SignalR是不受支持的,还是我太愚蠢了?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-07-05 21:28:36

试着把[HubName("tenantHub")]从你的课上移走。如果我把它们放在上面我的就不能用了。还可以尝试将hubs放到项目根目录下名为"Hubs"的文件夹中。

票数 9
EN

Stack Overflow用户

发布于 2013-04-04 06:20:25

这通常是由于两次加载jQuery而导致的。通常我们养成了在页脚加载jQuery的习惯。因为signalr会抱怨并强制您在signalr-x.js之前包含jQuery库。

您可以在signalr-x.js之前包含jQuery,并且可以在包含jQuery插件的页脚中执行以下操作,以避免两次加载它:

代码语言:javascript
复制
<script type="text/javascript">
    !window.jQuery && document.write('<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"><\/script>');
    !window.jQuery && document.write('<script src="/public/js/vendor/jquery-1.9.1.min.js"><\/script>');
</script>

希望这能有所帮助。:)

票数 5
EN

Stack Overflow用户

发布于 2012-08-27 03:33:16

我在VS2012 RTM中也遇到了同样的问题。

问题是我首先在BundleConfig.cs中添加了signalr,并期望它能正常工作。但是在浏览器中使用“查看源代码”时,我注意到在jquery.js之前包含了signalr.js。signalr.js包含在页面顶部,jquery包含在页面底部。

在对BundleConfig进行了一些修改之后,signalr.js被包含在jquery.js之后,而现在signalr的工作就像一个护身符!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11179644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档