$.connections无法读取未定义(SignalR)的集线器

本文关键字:SignalR 集线器 未定义 connections 读取 | 更新日期: 2023-09-27 18:25:41

我将尝试将数据发送到带有SignalR2的服务器。但我得到了这个错误:

未捕获的类型错误:无法读取未定义的属性"meldingenHub"

这是服务器上的C#代码:

public class MeldingenHub : Hub
{
    public void Meld(string blogitem, string verdiendePunten)
    {
        Clients.All.BroadcastMessage(blogitem, verdiendePunten);
    }
}

这里我包括了所有需要的文件:

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.signalR-2.1.2.min.js"></script>
<script src="~/signalr/hubs"></script>

这是在粗体代码上给出错误的客户端代码。

var medlingerHub=$.connection.meldingenHub;medlingerHub.client.broadcastMessage=函数(blogitem,verdiendePunten){$("#verdiendepunten").html(verdiendepunten);};$.connection.hub.start().done(函数(){var json={ID:parseInt(this.dataset.ID),类型:this.dataset.Type,GebruikerID:"@(Model.DeBlog.Gebruiker.Id)",Punten:parseInt(this.dataset.Punten),GestemdeGebruikerID:"@(型号:AangemeldeGebruiker)"};$.ajax({url:"../api/Stem/Toevoegen?apiKey=@Model.apiKey",类型:"PUT",数据:json,成功:函数(returnData){if(returnData.Oke==false){tooError(returnData)}其他{plaatsKleuren(returnData);medlingerHub.server.meld(data.ID,data.Punten);}}});})

注意上面的代码:当我点击按钮时,代码会执行。

我还在Startup.Auth.cs文件中添加了这一行:

public void ConfigureAuth(IAppBuilder app)
{
    app.MapSignalR();
    // other code
}

我在asp.net上学习教程。有人能帮我吗?

$.connections无法读取未定义(SignalR)的集线器

我找到了。我使用了错误的$.connection作用域。这是我制作的完整代码:

var punten = document.getElementsByClassName("punten-do-ajax");
var aantal = punten.length;
var conn = $.connection;
for (var i = 0; i < aantal; i++) {
    punten[i].addEventListener("click", function () {
        @if (Model.DeBlog.StemmenToegelaten)
        {
            <text>
            votes(conn, this);
            </text>
        }
    });
}
function votes(conn, sender) {
    var medlingenHub = conn.meldingenHub;
    medlingenHub.client.broadcastMessage = function (blogitem, verdiendePunten) {
        $("#verdiendepunten").html(verdiendePunten);
    };
    conn.hub.start().done(function () {
        var json = {
            ID: parseInt(sender.dataset.id),
            Type: sender.dataset.type,
            GebruikerID: "@(Model.DeBlog.Gebruiker.Id)",
            Punten: parseInt(sender.dataset.punten),
            GestemdeGebruikerID: "@(Model.AangemeldeGebruiker)"
        };
        $.ajax({
            url: "../api/Stem/Toevoegen?apiKey=@Model.ApiKey",
            type: "PUT",
            data: json,
            success: function (returnData) {
                if (returnData.Oke == false) {
                    toonError(returnData)
                }
                else {
                    plaatsKleuren(returnData);
                    medlingenHub.server.meld(returnData.ID, returnData.Punten);
                }
            }
        });
    });
}