我已经使用这个前端代码来快速更新sql表中的表。 但我找不到解决这个问题的方法。
未捕获的TypeError:无法读取未定义的属性“client”
<script src="Scripts/jquery-1.6.4.min.js"></script>
<script src="Scripts/jquery.signalR-2.0.2.min.js"></script>
<script src="signalr/hubs"></script>
<script>
$(function () {
// Proxy created on the fly
var job = $.connection.DataHub;
console.log(job);
// Declare a function on the job hub so the server can invoke it
job.client.displayStatus = function () {
getData();
};
// Start the connection
$.connection.hub.start();
getData();
});
function getData() {
var $tbl = $('#tblJobInfo');
$.ajax({
url: '../api/values',
type: 'GET',
datatype: 'json',
success: function (data) {
if (data.length > 0) {
$tbl.empty();
$tbl.append(' <tr><th>ID</th><th>Titulo</th>/tr>');
var rows = [];
for (var i = 0; i < data.length; i++) {
rows.push(' <tr><td>' + data[i].Id + '</td><td>' + data[i].titulo + '</td></tr>');
}
$tbl.append(rows.join(''));
}
}
});
}
</script>
如何解决这个问题?
答案 0 :(得分:2)
我想问题是你没有将集线器的名称更改为驼峰的情况。见下文:
var job = $.connection.dataHub;
如果您使用HubName属性,则JavaScript客户端上没有对camel case进行名称更改:
[HubName("DataHub")]
public class DataHub: Hub
此外,如果您使用的是ASP.NET MVC 4或5 Razor视图,请使用代字号来引用代理文件引用中的应用程序根目录:
<script src="~/signalr/hubs"></script>
答案 1 :(得分:0)
我们遇到了同样的错误但是,在我们的案例中,我们在Windows Server 2008 IIS 8上进行了一次部署(并且它没有错误地运行)和另一个部署(相同的应用程序,相同的代码)在Windows Server IIS 8上(提出了相同的错误)作为原始海报的错误)。
我们的解决方案是在IIS 8上部署时修改web.config并注释信号器/集线器位置部分中的“system.webServer”部分。
(注意系统注释了system.webServer)
<location path="signalr/hubs">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
<!--system.webServer>
<security>
<authorization>
<add accessType="Allow" users="*"/>
</authorization>
</security>
</system.webServer-->
</location>
这是原始的,它适用于IIS 7,但在IIS 8上失败:
(注意没有评论system.webServer)
<location path="signalr/hubs">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
<system.webServer>
<security>
<authorization>
<add accessType="Allow" users="*"/>
</authorization>
</security>
</system.webServer>
</location>