我正在尝试在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加载的,因此这是内容..其余部分在主文件中
答案 0 :(得分:7)
您需要从textarea获取值,而不是text():
$('#editor').val();
或者从TinyMCE获取内容:
var msg = tinyMCE.get('#editor').getContent()
或
var msg = tinyMCE.activeEditor.getContent();
答案 1 :(得分:1)
我注意到代码的两个部分之间存在一些奇怪的区别:
我们在这里使用val()
chat.server.send($('#editor').val());
我们在这里使用text()
var msg = $('#editor').text();
我猜你想让它们使用相同的功能。可能是val(),但无法确定您发布的代码。