1

我正在尝试在 ASP.NET MVC 4 Web 应用程序中建立与 SignalR 的连接。我需要做的是让用户在文本区域中书写,然后单击我试图将用户编写的消息发送给同一页面上的所有客户端。

我被困在一个非常简单的步骤中。要阅读用户在 textarea 中写入的内容,我使用以下代码:

var msg = $('#editor').text();
alert(msg);

我正在使用警报框进行测试。问题是警告框显示为空,即未正确读取消息。editor 是 html 文件中我的文本区域的 id。

这是所有的 JavaScript 文件:

$(function ()
    {
        var edit = $.connection.editorHub;

        edit.client.broadcastMessage = function (message) {

            var msg = $('#editor').text();
            alert(msg);

            // Add the message to the page. 
            $('#editor').append(msg);
        };

        $.connection.hub.start().done(function () {
            $('#button').click(function () {
               // call the send method in EditorHub
                chat.server.send($('#editor').val());
            });
        });
    });

这是 HTML 文件:

@{
   ViewBag.Title = "- Editor";
   ViewBag.ContentStyle = "/Content/CSS/editor.css";
}

 <script src="/Scripts/jquery-1.6.4.min.js" ></script>
 <script src="/Scripts/jquery.signalR-1.0.0.js"></script>
 <script src="/signalr/hubs"></script>
 <script type="text/javascript" src="~/Content/tinyMCE/tiny_mce.js" ></script> 
 <script type="text/javascript" src="~/Scripts/EditorHandler.js"></script>

 <button id="button">Click me</button>

 <form>  
       <textarea id="editor" name="content" cols="100" rows="30">
   </textarea>
 </form>

它是通过 ajax 加载的,因此这是内容.. 其余部分在主文件中

4

2 回答 2

7

您需要从 textarea 获取值,而不是 text() :

$('#editor').val();

或者从 TinyMCE 获取内容:

var msg = tinyMCE.get('#editor').getContent()

或者

var msg = tinyMCE.activeEditor.getContent();
于 2013-02-27T21:07:38.460 回答
1

我注意到您的代码的两个部分之间存在一个奇怪的区别:

这里我们使用val()

 chat.server.send($('#editor').val());

这里我们使用text()

 var msg = $('#editor').text();

我猜你希望这些使用相同的功能。可能是 val() 但无法确定您发布的代码。

于 2013-02-27T21:09:24.317 回答