SignalR的JS客戶端報錯 Uncaught TypeError: is not a function

原本運行正常,手賤改了下服務端方法名,當然,客戶端也相應修改了,結果chat.server.SendMsg這一句報錯了

這一下給我整懵逼了,一下午嘗試了各種方法,在網上也搜了很多相關問題:

1.VS、瀏覽器緩存問題?關閉、重啓都試過沒用

2.關鍵字重名?看了也不像

3.還有地方沒修改?Ctrl+F大法搜索了整個解決方案,沒找到第三個相同單詞

4.JS語法問題?翻來覆去看了沒錯

5.jQuery版本問題?版本足夠高,而且之前還是好的

6.引用的jQuery文件不對?沒弄錯

---------------------------------

還發現一個似乎和我一樣的問題,https://stackoverflow.com/questions/24252095/uncaught-typeerror-undefined-is-not-a-function-chat-server-send,但也沒有有用的信息。

最後在Chrome控制檯調用函數,竟然成功了

仔細觀察一番,原來是SendMsg=>sendMsg,首字母變成小寫,由於自動提示功能讓我無意中成功連接。

之後多番測試,發現的確是首字母大寫的原因,其他字母一定要和服務端相同,但首字母要小寫。

 

---------------------------------

補充一下,剛看了《asp.net signalr編程實戰》這本書,p83還提到JS客戶端引用代理部分

var chat = $.connection.MyHub;

對於這一句,服務端如果不指定[HubName("MyHub")]這樣,那麼就會默認使用類名,而類名在JS客戶端處,爲和JS標準一致,首字母也必須小寫,比如服務端類名爲SignalrHub,那麼JS端處爲var chat = $.connection.signalrHub;不小寫就會報錯。

原因如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章