带引导程序的VS 2013 WebForms模板。我有
<script src="/Scripts/jquery-2.0.3.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.signalR-2.0.0.min.js" type="text/javascript"></script>
<script type="text/javascript" src="/signalr/hubs"></script>
(用于试用signalr/hubs
和ResolveClientUrl("~/signalr/hubs")
等...)
和
<script type="text/javascript">
$(function () {
// Proxy created on the fly connection
var chat = $.connection.chat;
我曾经尝试过各种各样的变种,并且习惯于搜索很多关于这个问题,但现在仍然找不到解决方案。当我检查加载的页面源并单击signalr/hubs
时,我可以看到代理已加载到那里,我也可以在那里看到聊天。
但我仍然收到Uncaught TypeError: Cannot read property 'chat' of undefined
答案 0 :(得分:7)
如果未设置$.connection
,则jquery.signalR - * .min.js中的SignalR初始化代码未运行或至少未按预期完成。可能的原因可能是页面上包含多个jQuery版本(VS模板添加引用,因此如果您手动添加另一个,则可能是问题)。在这种情况下,SignalR自身设置的window.$
实例只是被第二个jQuery初始化脚本替换,该脚本再次设置window.$
。
如果不是这样,您应该尝试用未分化的版本替换缩小的SignalR脚本。然后在代码的开头设置断点(例如,在匿名函数中使用“use strict”的第一行),以及在$.connection = $.signalR = signalR;
或类似的行(朝向末尾)的行。
如果两者都没有被击中,那么根本就找不到脚本。如果第一个被击中,但第二个被击中,则还有一些其他问题 - 您可以从那里向后追踪它。这可能是您创建Hub或其他配置问题的一个问题。