JavaScript连接不启动,并且功能在JQuery和SignalR Web窗体应用程序上未执行

JavaScript连接不启动,并且功能在JQuery和SignalR Web窗体应用程序上未执行

问题描述:

我有一个ASP.NET聊天应用程序。使用JavaScript,Jquery和Signalr。但是,我的连接并未开始发布消息。当我写信时,浏览器会提示我输入我的别名。它不会发布它。 This is a snippet of the errorJavaScript连接不启动,并且功能在JQuery和SignalR Web窗体应用程序上未执行

C#类:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using Microsoft.AspNet.SignalR; 
using Microsoft.AspNet.SignalR.Hubs; 

namespace Synergince 
{ 
    [HubName("chatHub")] 
public class ChatHub : Hub 
{ 

    public void Send(string name, string message) 
    { 

     Clients.All.broadcastMessage(name, message); 
    } 

} 
} 

JavaScript代码:

<div class="container"> 
<input type="text" id="message" /> 
<input type="button" id="sendmessage" value="Send" /> 
<input type="hidden"id="displayname" /> 
<ul id="discussion"> 
</ul> 
</div> 

    //Script references 
<script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script> 
<script type="text/javascript" src="Scripts/jquery.signalR-1.2.1.js"> 
</script> 
<script src='<%: ResolveClientUrl("~/signalr/hubs") %>'></script> 


<script type="text/javascript"> 
    $(document).ready(function() { 
      //declare a proxy to reference the hub 
      var chat = $.connection.chatHub; 

      //function for the hub to call to broadcast messages 
      chat.client.broadcastMessage = function (name, message) { 
       $('#discussion').append('<li><strong>' + name + '</strong>:&nbsp;&nbsp;' + message + '</li>'); 
      }; 

      //Get the user name and store it to prepend to messages 
      $('#displayname').val(prompt('Enter preffered alias:', '')); 

      //initial focus on textbox 
      $('#message').focus(); 

      //connection start 
      $.connection.hub.start().done(function() { 
       $('#sendmessage').click(function() { 
        var Name = $('<div />').text($('#displayname').val()).html(); 
        var Msg = $('<div />').text($('#message').val()).html(); 

        //call send method to hub 
        chat.server.send(Name, Msg); 

        //clear textbox and set for next input 
        $('#message').val('').focus(); 

       }); 

      }); 

     }); 
    </script> 
</form> 

浏览器的调试器的错误是:

Uncaught TypeError: $.Deferred is not a function

向该行:

$.connection.hub.start().done(function() { 

不确定你想用下面的两个VAR来实现什么。

 $.connection.hub.start().done(function() { 
      $('#sendmessage').click(function() { 
       var Name = $('<div />').text($('#displayname').val()).html(); 
       var Msg = $('<div />').text($('#message').val()).html(); 

       //call send method to hub 
       chat.server.send(Name, Msg); 

       //clear textbox and set for next input 
       $('#message').val('').focus(); 

      }); 

我只能假设你想发送输入框的值。基本上与SignalR site上的示例聊天相同。

更改您的函数来获得“VAL”输入:

 $.connection.hub.start().done(function() { 
      $('#sendmessage').click(function() { 
       // Call the Send method on the hub. 
       chat.server.send($('#displayname').val(), $('#message').val()); 
       // Clear text box and reset focus for next comment. 
       $('#message').val('').focus(); 
      }); 
     }); 
+0

的浏览器仍然显示了一个遗漏的类型错误:$ .Deferred不是一个函数错误 –

+0

尝试更新枢纽参考如下图所示,我不能分辨你是否真的解决和连接。您也可以尝试更新到SignalR 2.x并再次浏览该教程。 –

+0

我的中心脚本没问题。当浏览器运行时,它通过它传递信息。它不是枢纽 –