2017-10-17 138 views
0

我有一個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() { 

回答

0

不確定你想用下面的兩個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並再次瀏覽該教程。 <! - 引用自動生成的SignalR集線器腳本。 - >

+0

我的中心腳本沒問題。當瀏覽器運行時,它通過它傳遞信息。它不是樞紐 –

相關問題