我在MVC5項目中使用SignalR 2.2.0。 SignalR依賴於JQuery在客戶端。JQuery 3和SignalR 2.2.0
JQuery最近發佈了新版本,我從Nuget更新了它,特別是從版本2.2.4更新到3.0.0.1,但是之後SignalR停止了工作。在JavaScript中啓動命令「$ .connection.hub」失敗。 經過很長時間的頭部劃傷,我將JQuery降級到2.2.4,一切都很順利。
我是唯一一個得到這個問題嗎?有什麼解決方法?
謝謝。
我在MVC5項目中使用SignalR 2.2.0。 SignalR依賴於JQuery在客戶端。JQuery 3和SignalR 2.2.0
JQuery最近發佈了新版本,我從Nuget更新了它,特別是從版本2.2.4更新到3.0.0.1,但是之後SignalR停止了工作。在JavaScript中啓動命令「$ .connection.hub」失敗。 經過很長時間的頭部劃傷,我將JQuery降級到2.2.4,一切都很順利。
我是唯一一個得到這個問題嗎?有什麼解決方法?
謝謝。
最後SignalR的版本2.2.1是重新租賃,解決這個問題。感謝所有評論。
你必須編輯自己的signalR代碼,jQuery的3它們去除負荷事件的快捷方式:
重大更改:.load(),.unload(),和.error()移除
這些方法是事件操作的快捷方式,但有幾個API限制。事件.load()方法與ajax .load()方法衝突。由於定義了DOM方法,因此.error()方法不能與window.onerror 一起使用。如果您需要通過這些名稱附加 事件,請使用.on()方法,例如, (「img」)。load(fn)爲$(img).on(「load」,fn)。
文件jquery.signalR-{version}.js
在https://jquery.com/upgrade-guide/3.0/
這樣:
必須更新這一行:
_pageWindow.load(function() { _pageLoaded = true; });
要:
_pageWindow.on("load",function() { _pageLoaded = true; });
如果你仍然得到了這樣的錯誤更新到2.2.1
和jQuery 3.X然後閱讀後...
TypeError: Cannot read property 'client' of undefined
像我你可能使用dynamically generated proxy,和你檢查你的/signalr/hubs
文件,並發現您沒有定義任何代理。
var proxies = {};
等待你可能會問我什麼都沒有改變 - 他們去了哪裏?
嗯,像我一樣,你可能是在這樣一個急於signalR升級爲2.2.1
,你忘了做所有的項目,現在你在不同的組件同時使用2.2.1
和2.2.0
。 (我正在用不同於我的主應用的程序集來定義我的集線器)。
我所需要做的就是確保每個項目中都有最新的nuget軟件包版本,並且一切正常。重建後應該正常工作。If not, this may also help.
如果您在其他地方使用了大量的jQuery,請自己動手並閱讀jQuery 3 upgrade guide。
有趣的是在發行說明中沒有提到jQuery 3,但是在這裏它們是無論如何:https://github.com/SignalR/SignalR/releases –
看着jquery.signalR-2.2.1.js。例如,我仍然找到jQuery.fn.unbind()。我不認爲singalR 2.2.1還沒有完全準備好jquery 3 – gsharp
版本2.2.2似乎可以解決這個問題,它與Jquery 3.1.1兼容。 –