为什么我会得到一个“a”;TypeError:undefined不是函数;使用SignalR客户端回调?

为什么我会得到一个“a”;TypeError:undefined不是函数;使用SignalR客户端回调?,signalr,signalr.client,Signalr,Signalr.client,我正在运行Signalr1.0.1,并试图在客户端javascript中挂接一些回调 考虑以下代码块: var hub = $.connection.FooHub; hub.disconnected(function () { log("Server has disconnected"); }); hub.received(function (data) { log

我正在运行Signalr1.0.1,并试图在客户端javascript中挂接一些回调

考虑以下代码块:

var hub = $.connection.FooHub;

hub.disconnected(function () {                
            log("Server has disconnected");
        });

hub.received(function (data) {                
            log("Data Received");
        }); 
在这两种情况下,我都会收到以下错误消息: TypeError:undefined不是函数

很明显,我遗漏了一些东西。 有人能帮我指出正确的方向吗

谢谢, JohnB

试试:

hub.disconnected = function () {                
        log("Server has disconnected");
    };

hub.received = function (data) {                
        log("Data Received");
    }; 

集线器代理是使用驼峰大小写创建的(适用于JavaScript)。因此,如果您在服务器上定义FooHub,您可以在客户端使用$.connection.FooHub而不是$.connection.FooHub来访问它。

页面中是否包含自动生成的集线器,它应该看起来像这样。
这个答案是错误的。它可以很好地防止类型错误,但是
disconnected
received
方法是用于附加处理程序的现有方法,就像JohnB在他的问题中所做的那样。这些方法在触发各自的事件时不被调用。事实上,这些方法永远不会被signar调用,因为它们是由API使用者调用的。ahmelsayed关于需要包含“/signalr/hubs”脚本的说法可能是正确的。我对他的回答有点困惑。我通过以下方法绕过了类型错误:$.connection.hub.disconnected(函数(){alert('disconnected');});我也有一个“收到”的。每当客户端中接收到数据时,就会触发它。断开连接()不会被触发。我真正想要实现的是添加回调。我该怎么做呢?我们有一个嵌入信号器的基于MVC的web应用程序。我的错就在这个例子上。我指的是FooHub,我真的指的是FooHub。对于方法名,两者都是有效的(自动转换),至少在最新的SignalR版本中是如此。但是,对于集线器名称,只有camel大小写有效。