2016-06-21 88 views
13

我在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,一切都很順利。

我是唯一一個得到這個問題嗎?有什麼解決方法?

謝謝。

回答

9

最後SignalR的版本2.2.1是重新租賃,解決這個問題。感謝所有評論。

+0

有趣的是在發行說明中沒有提到jQuery 3,但是在這裏它們是無論如何:https://github.com/SignalR/SignalR/releases –

+0

看着jquery.signalR-2.2.1.js。例如,我仍然找到jQuery.fn.unbind()。我不認爲singalR 2.2.1還沒有完全準備好jquery 3 – gsharp

+0

版本2.2.2似乎可以解決這個問題,它與Jquery 3.1.1兼容。 –

12

你必須編輯自己的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}.jshttps://jquery.com/upgrade-guide/3.0/

這樣:

必須更新這一行:

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

要:

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

也爲我工作。 –

+0

SignalR開發人員現在必須進行此更改。 –

+0

我在1.2.2版本中遇到了這個問題,這對我有用。謝謝! – eaglei22

0

如果你仍然得到了這樣的錯誤更新到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.12.2.0。 (我正在用不同於我的主應用的程序集來定義我的集線器)。

我所需要做的就是確保每個項目中都有最新的nuget軟件包版本,並且一切正常。重建後應該正常工作。If not, this may also help.

如果您在其他地方使用了大量的jQuery,請自己動手並閱讀jQuery 3 upgrade guide