无法从express.js中的ace.js-div获取文本

时间:2017-02-27 15:40:38

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

我使用ace.js(https://github.com/ajaxorg/ace)来创建代码段编辑器。 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。但我在后期请求中无法从编辑器中获取文本。当我调用save-request时,如何从div中获取文本?

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

    });

1 个答案:

答案 0 :(得分:2)

抱歉也许是挑剔的问题。很难解释这个问题。但如果有人出于某种原因陷入同样的​​境地,我会通过制作一种懒惰的解决方案来解决它。

我从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

    });