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;不小写就会报错。

原因如下:

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