信号集线器:JavaScript运行时错误:无法获取属性';多功能集线器';指未定义的或空的引用
无论我尝试什么修复,我的JavaScript中总是会出现这个错误。即使我的_布局中有所有的signarjavascript库,也几乎没有识别$.connection。我在Chrome浏览器控制台中遇到以下错误:uncaughttypeerror:“无法读取未定义索引的属性'multipleFileHub':508 (匿名函数)索引:508 x、 event.dispatch jquery-2.0.2.js:4692 y、 处理jquery-2.0.2.js:4376“未定义的” 我的Global.asax继承自“StsMvcHttpApplication”而不是标准的“System.Web.HttpApplication”,这有关系吗?在我的例子中,我必须将“RouteTable.Routes.MapHubs()放入其中;“在我的“RegisterRoutes”方法中,而不是“Application_Start”,因为Application_Start的启动速度不够快……如果我将其放入app Start中,它会开始寻找控制器 非常感谢您的帮助!我将首先显示布局代码,然后显示所有单独的代码: _布局信号集线器:JavaScript运行时错误:无法获取属性';多功能集线器';指未定义的或空的引用,javascript,jquery,asp.net,signalr,Javascript,Jquery,Asp.net,Signalr,无论我尝试什么修复,我的JavaScript中总是会出现这个错误。即使我的_布局中有所有的signarjavascript库,也几乎没有识别$.connection。我在Chrome浏览器控制台中遇到以下错误:uncaughttypeerror:“无法读取未定义索引的属性'multipleFileHub':508 (匿名函数)索引:508 x、 event.dispatch jquery-2.0.2.js:4692 y、 处理jquery-2.0.2.js:4376“未定义的” 我的Global
@section head
{
@Scripts.Render("~/Scripts/Libs/jquery-2.0.2.min.js")
@Scripts.Render("~/Scripts/Libs/jquery-ui-1.10.3.min.js")
@Scripts.Render("~/Scripts/Libs/jquery.validate.min.js")
@Scripts.Render("~/Scripts/Libs/jquery.validate.unobtrusive.min.js")
@Scripts.Render("~/Scripts/Libs/modernizr-2.6.2.js")
@Scripts.Render("~/Scripts/Libs/modernizr.custom.blobconstructor.js")
@Scripts.Render("~/Scripts/SidebarMenu.js")
@Scripts.Render("~/Scripts/BC_Common.js")
@Scripts.Render("~/Scripts/scene.layoutservice.js")
@Scripts.Render("~/Scripts/scene.dataservice.js")
@Scripts.Render("~/Scripts/jquery.signalR-1.1.2.min.js")
@Scripts.Render("~/signalr/hubs")
@Scripts.Render("~/Scripts/scene.startup.js")
}
INDEX.CSHTML
$('#dBtn').click(function () {
var docIds = sceneLayoutService.getSelection();
if (docIds.length === 0) {
alert("you need to select one");
return false;
} else {
var docIdsParam = jQuery.param(docIds.map(function (value) {
return { "name": "docIds", "value": value };
}));
// Proxy created on the fly
var test_connection = $.connection.multipleFileHub;
// Start the connection
$.connection.hub.start().done(function() {
test_connection.server.send("test");
});
}
return true;
});
服务器代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
namespace Portal.Web.Hubs
{
[HubName("multipleFileHub")]
public class multipleFileHub : Hub
{
public void Send(string message)
{
// Call the addMessage method on all clients
Clients.All.addMessage(message);
}
}
}
全局.ASAX路由
public static void RegisterRoutes(RouteCollection routes)
{
RouteTable.Routes.MapHubs();
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
routes.Ignore("{*allpng}", new { allpng = @".*\.png(/.*)?" });
routes.Ignore("{*allgif}", new { allgif = @".*\.gif(/.*)?" });
routes.Ignore("{*alljpg}", new { alljpg = @".*\.jpg(/.*)?" });
routes.MapRoute(
"Error", // Route name
"Error/{action}/{id}", // URL with parameters
new {controller = "Error", action = "Index", id = UrlParameter.Optional });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Landing", id = UrlParameter.Optional } // Parameter defaults
);
}
页面上的所有JAVASCRIPT引用
<script src="/ConnectPortal/Scripts/Libs/jquery-2.0.2.min.js"></script>
<script src="/ConnectPortal/Scripts/Libs/jquery-ui-1.10.3.min.js"></script>
<script src="/ConnectPortal/Scripts/Libs/jquery.validate.min.js"></script>
<script src="/ConnectPortal/Scripts/Libs/jquery.validate.unobtrusive.min.js"></script>
<script src="/ConnectPortal/Scripts/Libs/modernizr-2.6.2.js"></script>
<script src="/ConnectPortal/Scripts/Libs/modernizr.custom.blobconstructor.js"></script>
<script src="/ConnectPortal/Scripts/SidebarMenu.js"></script>
<script src="/ConnectPortal/Scripts/BC_Common.js"></script>
<script src="/ConnectPortal/Scripts/scene.layoutservice.js"></script>
<script src="/ConnectPortal/Scripts/scene.dataservice.js"></script>
<script src="/ConnectPortal/Scripts/jquery.signalR-1.1.2.min.js"></script>
<script src="/ConnectPortal/signalr/hubs"></script>
<script src="/ConnectPortal/Scripts/scene.startup.js"></script>
问题的原因是,jquery库第二次加载到页面上。布局中使用了另一个javascript库,在第一次缩小的jquery库之后在页面上插入未缩小的jquery库。很难找到这一点,因为代码需要插入另一个jquery库rary没有显示在布局页面上。无论如何,我只是想让所有读过这篇文章的人都知道,这个问题肯定与在signar库之后添加的jquery库有关
大卫·福勒(David Fowler)从上面的评论中说得很对!谢谢!事实证明,这个问题的原因是因为jquery库第二次加载到页面上。布局中使用了另一个javascript库,在第一次缩小后在页面上插入非缩小的jquery库。这是错误的因为插入另一个jquery库的代码没有显示在布局页面上,所以我想我应该让所有读过这篇文章的人知道,这个问题肯定与在signer库之后添加的jquery库有关
大卫·福勒(David Fowler),从上面的评论来看,非常正确!谢谢!你在页面上已经包含了两次jQuery。如果你使用MVC4,那么你可能在布局页面上包含了jQuery,并再次将其包含在你的信号器页面中。我使用Chrome开发工具打开页面,发现只有一个版本的jQuery-2.0.2.min.js。我已经包含了所有的jQuery-2.0.2.min.js上面引用的vascript库。这是我看到该错误的唯一原因。您可以尝试删除布局页面,并查看是否可以使用signalr使用该特定页面所需的最低脚本。如果您在使用的任何浏览器中打开控制台,是否会看到任何脚本/解析错误?任何404或其他错误网络面板中出现ng?我在控制台中遇到此错误:“UncaughtTypeError:无法读取未定义的属性'multipleFileHub'“页面上包含了两次jQuery。如果您使用的是MVC4,那么您可能在布局页面上有jQuery,并将其再次包含在您的SignalR页面中。我使用Chrome开发工具调出该页面,发现只有一个版本的jQuery-2.0.2.min.js。我已经包括了上面提到的所有javascript库。这是我看到这个错误的唯一原因。您可以尝试删除布局页面,并查看是否可以使用signalr使用该特定页面所需的最少脚本。如果在您使用的任何浏览器中打开控制台,是否会看到任何脚本/解析错误?任何404或网络面板中的任何内容?我在控制台中收到此错误:“UncaughtTypeError:无法读取未定义的属性'multipleFileHub'”