我承认,我不知道我在做什么。
我试图了解如何使用SignalR,我以下的各种样品在网上几乎一字不差,我不能让粘贴$■连接被不确定的。 我在MVC 4.0工作,并试图为使用的NuGet下载的signalR js文件或来自样本项目。 这是我的脚本引用。
@Scripts.Render("~/Scripts/jquery-1.7.2.min.js")
@Scripts.Render("~/Scripts/knockout-2.0.0.js")
@Scripts.Render("~/Scripts/jquery.signalR.js")
@Scripts.Render("~/signalr/hubs")
脚本似乎加载 - 我甚至已经把提醒他们这火的开始,但$■连接始终是不确定的。
在后来的一系列离奇转,我已经在那里我试图用一个不同的jQuery库不同的项目,它使用$。 而对象通常也是不确定的。
我只是在寻找什么,我可能是做错了任何可能的解释。 首先十分感谢。
我今天得到了同样的问题。
你的回答我指出了正确的方向,因为我对剧本装载完全相同的设置。
我只好按以下顺序页面(头)的顶我所有的脚本标记。
- JQuery的
- SignalR
- / signalr /集线器
- 我-的script.js
当然,在@ Layout.cshtml是如此周到添加@Scripts.Render("~/bundles/jquery")
在底部<body>
标记。
这里是发生了什么。
在这种配置中,页面加载时,它加载了头标记的所有脚本,在为了他们指定。
所以它加载了jQuery,那么SignalR,其设置$.connection
,然后自动生成的枢纽脚本设置了$.connection.hubName
,那么该网站的自定义脚本。
在这一点上您的自定义代码运行。 但你的代码在某些时候,等待body.onload
或document.onReady
访问之前$.connection
但与此同时,这事件触发,其布局模板增加了对你的身体标签也下载并执行结束脚本包。 这个捆绑有再次jQuery库....这对其他东西复位SignalR设置$
现在你的$.connection
不再被定义。
如何解决呢
简单的办法,确保你不加载JQuery的两倍,SignalR之前和之后SignalR一次一次。 我把我所有的脚本捆绑后装入并固定的问题。 这里最好的做法是使用由模板提供的“脚本”部分。
@section scripts{
@*/* load your scripts here. You can exclude jQuery,
coz it's already in the template */ *@
}
所以,这不是一个SignalR错误在所有...
这是2小时我的生活......我永远不会回来...
希望这可以帮助。
我解决了这个问题。 我知道我做了什么,但我不知道为什么它的工作是肯定的。
我引用在_Layout.cshtml视图顶部的主jQuery库(版本1.7.2),但并没有引用任何其他的jQuery脚本。 我注意到,在默认情况下在布局图中它被装
@Scripts.Render("~/bundles/jquery")
在视图中的脚本部分的和,所述底部位于低于。
@RenderSection("scripts", required:false)
我进一步改变了我的脚本引用如图所示,并在问题上面显示里面我的脚本引用放
@section scripts
{
@Scripts.Render("~/Scripts/jquery.signalR-0.5.1.js")
@Scripts.Render("~/Scripts/jquery.color.js")
@Scripts.Render("~/signalr/hubs")
@Scripts.Render("~/Scripts/blasht.signalr.js")
}
在我看来,包装内,以便束加载后,他们将被包括在内。 我认为我没有加载所有必要的jQuery因为现在它的工作原理。
现在,如果我能想出如何适用于我的其他项目。
这部作品的原因是因为其中的JavaScript文件被加载的顺序。 如果你尝试加载的jQuery之前加载jquery.signalR-0.5.1.js,那么你将面临$■连接不确定,因为这个注册的jQuery应先送入。 在_Layout.cshtml模板脚本的顺序加载
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
所以里面任何的你的意见,你可以在脚本部分加载signalr,这应该能正常运行。
我有同样的问题。 对我来说我已经包括jQuery的页面2次,后来在布局。 去除其中的一个固定的问题。
希望能帮助到你
这发生在我身上,因为我动态加载的~/signalr/hubs
加载前的脚本jquery.signalR-1.1.4.js
脚本。
当动态加载,没有错误存在,但是如果我把输出~/signalr/hubs
并粘贴到我的Chrome浏览器开发工具,我收到一条错误消息VM1047:18 Uncaught Error: SignalR: SignalR is not loaded. Please ensure jquery.signalR-x.js is referenced before ~/signalr/hubs. at <anonymous>:18:15 at <anonymous>:300:2
VM1047:18 Uncaught Error: SignalR: SignalR is not loaded. Please ensure jquery.signalR-x.js is referenced before ~/signalr/hubs. at <anonymous>:18:15 at <anonymous>:300:2