SignalR $■连接是未定义(SignalR $.connection is undefined

2019-06-25 18:56发布

我承认,我不知道我在做什么。

我试图了解如何使用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库不同的项目,它使用$。 而对象通常也是不确定的。

我只是在寻找什么,我可能是做错了任何可能的解释。 首先十分感谢。

Answer 1:

我今天得到了同样的问题。

你的回答我指出了正确的方向,因为我对剧本装载完全相同的设置。

我只好按以下顺序页面(头)的顶我所有的脚本标记。

  • JQuery的
  • SignalR
  • / signalr /集线器
  • 我-的script.js

当然,在@ Layout.cshtml是如此周到添加@Scripts.Render("~/bundles/jquery")在底部<body>标记。

这里是发生了什么。

在这种配置中,页面加载时,它加载了头标记的所有脚本,在为了他们指定。

所以它加载了jQuery,那么SignalR,其设置$.connection ,然后自动生成的枢纽脚本设置了$.connection.hubName ,那么该网站的自定义脚本。

在这一点上您的自定义代码运行。 但你的代码在某些时候,等待body.onloaddocument.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小时我的生活......我永远不会回来...

希望这可以帮助。



Answer 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因为现在它的工作原理。

现在,如果我能想出如何适用于我的其他项目。



Answer 3:

这部作品的原因是因为其中的JavaScript文件被加载的顺序。 如果你尝试加载的jQuery之前加载jquery.signalR-0.5.1.js,那么你将面临$■连接不确定,因为这个注册的jQuery应先送入。 在_Layout.cshtml模板脚本的顺序加载

@Scripts.Render("~/bundles/jquery")

@RenderSection("scripts", required: false)

所以里面任何的你的意见,你可以在脚本部分加载signalr,这应该能正常运行。



Answer 4:

我有同样的问题。 对我来说我已经包括jQuery的页面2次,后来在布局。 去除其中的一个固定的问题。

希望能帮助到你



Answer 5:

这发生在我身上,因为我动态加载的~/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



文章来源: SignalR $.connection is undefined