当我尝试从客户端调用服务器端的SendNewOrderConfirmation时
“undefined”不是函数
在chat.SendNewOrderConfirmation(data);
行
有谁知道为什么会这样?
谢谢
在服务器端
public class DriverChat : Hub, IDisconnect
{
public void Start(Driver d)
{
...
}
public void SendNewOrderConfirmation(OrderDriverData data)
{
LogFile.LogResponseTime(data.orderId, data.driverId);
}
}
在客户端
function begin(args) {
try {
//alert('begin');
chat = $.connection.driverChat;
chat.refresh = function () {
ready++;
};
chat.disconnect = function () {
alert('Server has disconnected');
};
$.connection.hub.start(function () {
chat.start(args);
ready++;
// alert('signalR started');
});
} catch (e) {
alert(e.message);
return e.message;
}
}
function confirmNewOrder(data) {
try{
alert('sending cofirmation');
chat.SendNewOrderConfirmation(data);
alert('confirmation sent');
} catch (e) {
alert(e);
}
};
}
答案 0 :(得分:7)
根据您使用的SignalR的版本,答案可能会有所不同。
首先,如果您使用的是v1 Alpha之前的版本,那么您的代码应为;
chat.sendNewOrderConfirmation(data);
注意小写s
。
如果您使用的是版本v1 Alpha或更高版本,则代码应为;
chat.server.sendNewOrderConfirmation(data);
答案 1 :(得分:0)
您必须注册集线器的javascript生成文件。将其添加到您的页面(或您的母版页):
<script src="<%: ResolveUrl("~/signalr/hubs") %>"></script>