2017-10-17 7 views
0

私はASP.NETチャットアプリケーションを持っています。 JavaScript、Jquery、Signalrを使用します。しかし、私の接続はメッセージを投稿し始めません。ブラウザはメッセージを書くときに私のエイリアスを入力するよう促します。投稿はしません。 This is a snippet of the errorJQueryとSignalR WebフォームアプリケーションでJavaScript接続が開始されず、関数が実行されない

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

以下の2つの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のサンプルチャットと同じです。

変更あなたの関数は、入力の「ヴァル」を得るために:

 $.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

ブラウザはまだ捕捉されない例外TypeErrorを示しています$ .Deferred私は、以下に示すよう –

+0

があなたのハブの参照を更新してみ機能のエラーではありませんあなたが実際に解決して接続しているかどうかは分かりません。また、SignalRの2.xにアップデートして、チュートリアルをもう一度見てみることもできます。 <! - 自動生成されたSignalRハブスクリプトを参照してください。 - >

+0

ハブスクリプトは問題ありません。ブラウザが実行されると、ブラウザを介して情報が渡されます。ハブではない –

関連する問題