gpt4 book ai didi

javascript - SignalR $.connection 未定义

转载 作者:行者123 更新时间:2023-12-03 21:32:11 25 4
gpt4 key购买 nike

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

我正在尝试学习如何使用 SignalR,并且我几乎逐字地关注在线各种示例,但我无法粘贴 $.connection 未定义。我正在使用 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")

脚本似乎已加载 - 我什至在它们的开头放置了触发的警报,但 $.connection 始终未定义。

在一个奇怪的事件中,我有一个不同的项目,我试图使用不同的 jQuery 库,它使用 $.并且该对象也始终是未定义的。

我只是在寻找任何可能的解释来解释我可能做错了什么。预先非常感谢。

最佳答案

我今天也遇到了同样的问题。

您的回答为我指明了正确的方向,因为我的脚本加载设置完全相同。

我将所有脚本标签按以下顺序放置在页面顶部(头部)。

  • JQuery
  • 信号R
  • /signalr/集线器
  • my-script.js

当然,@Layout.cshtml 非常周到地添加了 @Scripts.Render("~/bundles/jquery")<body> 的底部标签。

这就是发生的事情。

在此配置中,当页面加载时,它会按照指定的顺序加载 head 标记中的所有脚本。

因此它加载 JQuery,然后加载 SignalR,其设置 $.connection然后自动生成的集线器脚本设置 $.connection.hubName ,然后是网站的自定义脚本。

此时您的自定义代码将运行。但是您的代码在某个时候会等待 body.onloaddocument.onReady在访问$.connection之前

当此事件触发时,布局模板在 body 标记末尾为您添加的脚本包也会下载并执行。该 bundle 再次包含 jquery 库....这会重置 $ 上的所有 SignalR 设置现在你的$.connection不再定义。

如何解决

简单修复,确保不会加载 JQuery 两次,一次在 SignalR 之前,一次在 SignalR 之后。我将所有脚本移动到 bundle 之后加载,它解决了问题。这里的最佳实践是使用模板提供的“脚本”部分。

@section scripts{
@*/* load your scripts here. You can exclude jQuery,
coz it's already in the template */ *@
}

所以这根本不是 SignalR 错误...

那是我生命中的两个小时......我永远不会回来......

希望这有帮助。

关于javascript - SignalR $.connection 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11199070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com