我有这个前端代码,可以在 sql 表中更新后立即更新表。 但我找不到解决这个问题的方法。
Uncaught TypeError: Cannot read property 'client' of undefined
<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>
如何解决这个问题?
最佳答案
我猜问题是您没有将集线器的名称更改为驼峰式大小写。见下文:
var job = $.connection.dataHub;
如果您使用 HubName 属性,JavaScript 客户端上的名称不会更改为驼峰式大小写:
[HubName("DataHub")]
public class DataHub: Hub
此外,如果您使用 ASP.NET MVC 4 或 5 Razor View ,请使用波浪号来引用代理文件引用中的应用程序根目录:
<script src="~/signalr/hubs"></script>
关于c# - SignalR 客户端未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21945510/