【问题标题】:Unable to get text from ace.js-div in express.js无法从 express.js 中的 ace.js-div 获取文本
【发布时间】:2017-02-27 15:40:38
【问题描述】:

我正在使用 ace.js(https://github.com/ajaxorg/ace) 创建一个 sn-p-editor。 html 看起来像这样:

<div id="editor" name="editor">{{ text }}</div>
<script src="http://cdnjs.cloudflare.com/ajax/libs/ace/1.1.3/ace.js"></script>
<script>
    var editor = ace.edit("editor");
    editor.setTheme("ace/theme/monokai");
    editor.getSession().setMode("ace/mode/javascript");
</script>

更改文本后,我想保存到 mongoose-db。但我无法在我的后期请求中从编辑器中获取文本。调用保存请求时如何从 div 中获取文本?

router.route("/home/save/:id")
    .post(function(request, response) {
        console.log(request.body.editor) // -> undefined
        console.log(request.body) // -> {}

    });

【问题讨论】:

  • @T.J.Crowder 稍微编辑了这个问题。希望大家更明白!我想以与登录时通过表单获取代码相同的方式获取代码,但我不想将文本放入输入中。也许我可以将 div 放在一个带有动作的表单中?
  • @T.J.Crowder 解决了,抱歉这个问题太繁琐了,很难解释清楚,呵呵

标签: javascript express request handlebars.js ace-editor


【解决方案1】:

抱歉,这个问题可能很挑剔。很难解释这个问题。但是如果有人因为某种原因遇到同样的情况,我会通过一种懒惰的解决方案来解决它。

我从https://jsfiddle.net/deepumohanp/tGF6y/ 中获得灵感,并从 ace-div 中获取文本并将其放入输入中。然后我刚刚从下一个请求中得到了输入:

{{> nav }}

<div id="editor">{{ text }}</div>

<form action="/home/save/{{ this.sessionId }}" method="post">
    <input type="text" value="" name="content" id="content">
    <button>Save</button>
</form>

<script src="http://cdnjs.cloudflare.com/ajax/libs/ace/1.1.3/ace.js"></script>
<script>
    var textarea = document.querySelector("#content");

    var editor = ace.edit("editor");
    editor.setTheme("ace/theme/monokai");
    editor.getSession().setMode("ace/mode/javascript");

    console.log(textarea.value);
    console.log(editor.getSession().getValue());

    editor.getSession().on("change", function () {
        textarea.value = editor.getSession().getValue();
    });

    textarea.value = editor.getSession().getValue();
</script>

这样,request.body.content 和文本一起返回:

router.route("/home/save/:id")
    .post(function(request, response) {
        console.log(request.body.content) // -> text

    });

【讨论】:

  • 谢谢,只有 input.value 根本没有回车 - 将 &lt;input&gt; 替换为 &lt;textarea&gt;。工作正常!
猜你喜欢
  • 2021-03-07
  • 2020-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-21
  • 1970-01-01
  • 2020-01-16
相关资源
最近更新 更多