signalr this.hub.getAll Uncaught TypeError:Object#<object>没有方法'getAll'</object>

时间:2013-12-29 19:07:05

标签: javascript asp.net signalr signalr-hub signalr.client

我正在学习SignalR(使用this教程)并获得我班级的代码。问题是执行以下

this.init = function () {
  this.hub.getAll();
}

我得到了Uncaught TypeError:Object#没有方法'getAll'。检查this.hub时,我发现没有add,update,getAll方法。所有这些方法都是Thus.hub.server中的一层内部。为什么this.hub.getAll不存在? this.hub.getAll()和this.hub.server.getAll()是一回事吗?我想不是因为当我将我的代码更改为this.hub.server.getAll()时,错误就消失了但它没有做它应该做的事情:加载数据。

这是脚本部分

@section Scripts {
  @Scripts.Render("~/bundles/knockout")
  @Scripts.Render("~/bundles/signalr")
  <script src="/Scripts/jquery.signalR-2.0.1.min.js" type="text/javascript"></script>
  <script src="signalr/hubs" type="text/javascript"></script>
  <script src="/Scripts/jquery.livequery.min.js"></script>

BundleConfig.cs

    bundles.Add(new ScriptBundle("~/bundles/signalr").Include(
                        "~/Scripts/jquery.signalR-2.0.1.min.js"));

有什么想法吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

您所关注的教程基于较旧版本的SignalR。那时,hub方法被直接添加到hub对象中;现在,它们被添加到hub.server以避免与客户端方法(在hub.client上定义)发生冲突。因此,您需要在案件中致电hub.server.getAll()。至于为什么不起作用,你将不得不提供更多的细节(可能是在一个不同的问题),虽然你要检查的第一件事是你是否在hub.client而不是在{{1}}上定义客户端方法hub,正如教程中所做的那样。