我对JavaScript非常陌生。我试图在JavaScript中实现一个简单的SignalR服务器回调。
首先是_Layout.cshtml
<body>
<div class="container body-content">
@RenderBody()
</div>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
</body>
接下来,我的Index.html
<body>
@section scripts
{
<script src="/Scripts/jquery-3.1.1.min.js"></script>
<script src="/Scripts/jquery.signalR-2.1.2.js"></script>
<script src="/signalr/hubs"></script>
<script type="text/javascript">
$(function () {
console.log("HELLO WORLD");
$.connection.hub.url = 'http://blah:8094/signalr';
var proxy = $.connection.DashboardHub;
proxy.client.NotifyAllClientsOfChanges = function () {
var searchUrl = "Home/GetData";
$.ajax({
url: searchUrl,
type: "POST",
success: function (data) {
$("#divData").html(data);
}
});
};
$.connection.hub.start({ transport: 'auto', xdomain: true })
.done(function () {
console.log('Connected.');
})
.fail(function (e) {
console.log('Unable to connect:' + e);
});
});
</script>
}
@using (@Html.BeginForm("Index", "Home"))
{
<div id="divData">
@{
var grid = new WebGrid(Model);
@grid.GetHtml(
mode: WebGridPagerModes.All,
columns:
grid.Columns
(
grid.Column(columnName: "SiteId", header: "Site Id", format: @<text>@item.SiteId</text>),
grid.Column(columnName: "Instrument", header: "Instrument", format: @<text>@item.InstrumentId</text> ),
.
.
.
))
}
</div>
}
</body>
我看到&#34; HELLO WORLD&#34;控制台登录到顶部,但我没有看到任何控制台日志的&#34;已连接&#34;或&#34;无法连接&#34;
我在控制台中看到一条错误,上面写着&#34;无法读取属性&#39;客户端&#39;未定义&#34;
我跟踪了很多关于类似主题的SO帖子并尝试了很多东西。我并不完全确定我的编码是否正确。
有人看到了什么错了吗?
由于
答案 0 :(得分:3)
不确定整个功能,但对于初学者:
var proxy = $ .connection.DashboardHub;
应该
var proxy = $ .connection.dashboardHub;
需要以小写
开头答案 1 :(得分:1)
<script src="/Scripts/jquery-3.1.1.min.js"></script>
<script src="/Scripts/jquery.signalR-2.1.2.js"></script>
<script src="http://blah:8094/signalr/hubs"></script>
其次,当您在SignalR的客户端声明名称时,即使您在服务器中将其设置为大写,也必须对第一个单词使用小写。意味着,如果你声明`MyChatHub&#39;在您的服务器中,您将其称为&#39; myChatHub&#39;在你的javascript中。
var proxy = $.connection.dashboardHub;
proxy.client.notifyAllClientsOfChanges
第三,为什么你在AJAX中使用POST方法是GET方法?
答案 2 :(得分:0)