3

当我尝试从客户端调用服务器端的 SendNewOrderConfirmation 时,我得到

“未定义”不是函数

在线 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);
        }
    };
}
4

2 回答 2

7

根据您使用的 SignalR 版本,答案可能会有所不同。

首先,如果您使用的是 v1 Alpha 之前的版本,那么您的代码应该是;

chat.sendNewOrderConfirmation(data);

注意小写s

如果您使用的是 v1 Alpha 或更高版本,那么您的代码应该是;

chat.server.sendNewOrderConfirmation(data);
于 2013-01-17T13:37:56.213 回答
0

您必须注册集线器的 javascript 生成文件。将此添加到您的页面(或您的母版页):

<script src="<%: ResolveUrl("~/signalr/hubs") %>"></script>
于 2013-01-17T13:23:14.583 回答