JQuery 3 und SignalR 2.2.0

Lesezeit: 3 Minuten

Ich verwende SignalR 2.2.0 in einem MVC5-Projekt. SignalR ist clientseitig von JQuery abhängig.

JQuery hat kürzlich eine neue Version veröffentlicht, ich habe sie von Nuget aktualisiert, insbesondere von Version 2.2.4 auf 3.0.0.1, aber dann funktionierte SignalR nicht mehr. Startbefehl „$.connection.hub“ in Javascript schlägt fehl. Nach langem Kopfkratzen führe ich ein Downgrade von JQuery auf 2.2.4 durch und alles ist wieder in Ordnung.

Bin ich der einzige, der dieses Problem hat? Gibt es eine Problemumgehung?

Vielen Dank.

  • Ich habe das gleiche Problem; aber schlimmer. Upgrade von jQuery von 1.11.x auf 3.4.1. Haben viele Breaking Changes und die meisten davon stammen aus anderen Abhängigkeiten

    – Senura Dissanayake

    16. Mai 2019 um 5:28 Uhr

  • @SenuraDissanayake Versuchen Sie, alles zu aktualisieren … Jetzt verwende ich derzeit SignalR 2.4.1 und immer noch JQuery 3.3.1, habe seitdem keine Probleme mit dem Upgrade.

    – TNT

    16. Mai 2019 um 11:57 Uhr


Benutzeravatar von Quentin Roger
Quentin Roger

Sie müssen den signalR-Code selbst bearbeiten. In jquery 3 wurde die Verknüpfung für das Ladeereignis entfernt:

Breaking change: .load(), .unload() und .error() entfernt

Diese Methoden sind Abkürzungen für Ereignisoperationen, hatten jedoch mehrere API-Einschränkungen. Die Methode event .load() stand in Konflikt mit der Methode ajax .load(). Die .error()-Methode konnte aufgrund der Art und Weise, wie die DOM-Methode definiert ist, nicht mit window.onerror verwendet werden. Wenn Sie Ereignisse mit diesen Namen anhängen müssen, verwenden Sie die Methode .on(), ändern Sie zB $(“img”).load(fn) in $(img).on(“load”, fn).

https://jquery.com/upgrade-guide/3.0/

also in der datei jquery.signalR-{version}.js :

Sie müssen diese Zeile aktualisieren:

_pageWindow.load(function () { _pageLoaded = true; });

Zu :

_pageWindow.on("load",function () { _pageLoaded = true; });

  • Hat bei mir auch funktioniert.

    – Edgars Pivovarenoks

    4. Juli 2016 um 10:08 Uhr

  • SignalR-Entwickler müssen diese Änderung jetzt vornehmen.

    – Shyamal Parich

    14. Juli 2016 um 15:43 Uhr

  • Ich hatte dieses Problem in Version 1.2.2 und das hat bei mir funktioniert. Danke!

    – eaglei22

    24. Mai 2017 um 15:57 Uhr

Endlich wurde Version 2.2.1 von SignalR veröffentlicht, die dieses Problem löst. Danke für alle Kommentare.

  • interessanterweise keine Erwähnung von jQuery 3 in den Versionshinweisen, aber hier sind sie trotzdem: github.com/SignalR/SignalR/releases

    – Simon_Weaver

    16. August 2016 um 3:24 Uhr

  • Blick auf jquery.signalR-2.2.1.js. Ich finde zum Beispiel immer noch jQuery.fn.unbind(). Ich glaube nicht, dass singalR 2.2.1 noch vollständig bereit für jquery 3 ist

    – gis

    5. Januar 2017 um 10:19 Uhr

  • Version 2.2.2 scheint dies zu beheben, es ist kompatibel mit Jquery 3.1.1, wie es kommt.

    – Pete Stensønes

    25. Juli 2017 um 15:29 Uhr

Benutzeravatar von Simon_Weaver
Simon_Weaver

Wenn Sie nach dem Update auf immer noch solche Fehler erhalten 2.2.1 und jQuery 3.x dann weiterlesen…

TypeError: Cannot read property 'client' of undefined

Wie ich verwendest du wahrscheinlich die dynamisch generierter Proxyund Sie haben Ihre überprüft /signalr/hubs Datei und festgestellt, dass Sie keine Proxys definiert haben.

 var proxies = {};

Warten Sie, Sie fragen vielleicht, dass ich nichts geändert habe – wo sind sie hingegangen?

Nun, wie ich hatten Sie es wahrscheinlich so eilig, signalR auf zu aktualisieren 2.2.1 dass Sie es in all Ihren Projekten vergessen haben und jetzt beide verwenden 2.2.1 und 2.2.0 in verschiedenen Versammlungen. (Ich definiere meine Hubs in einer anderen Assembly als meine Haupt-App).

Alles, was ich tun musste, war sicherzustellen, dass ich in jedem Projekt die neueste Nuget-Paketversion hatte, und alles funktionierte. Sollte nach dem Umbau gut funktionieren. Wenn nicht, kann dies auch helfen.

Tun Sie sich auch selbst einen Gefallen und lesen Sie die Upgrade-Leitfaden für jQuery 3 wenn Sie woanders viel jQuery verwenden.

1431450cookie-checkJQuery 3 und SignalR 2.2.0

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy