如何在 json 中格式化 html 的字符串

How to format a string of html in json

我正在开发一个生成 html 文件的工具。代码相当简单。用户单击 post 按钮,textarea 中的内容将发送到端点。我已经尝试 post 将 html 作为 json 字符串。

预计 调用 saveContent 方法。来自 textarea 元素的值被连接成一个字符串。此字符串是发送到服务器的 json。请求完成后,应该返回 201 响应。

实际 调用 saveContent 方法。来自 textarea 元素的值被连接成一个字符串。此字符串是发送到服务器的 json。返回 400 响应。

这里是字符串的例子

{"content":"<div id="maincontentstyle">
    <center>
        <div id="boxstyle">
            <h3 id="title">title</h3>
                <center>
                    <div class="source">
                        <div id="s1" class="draggyBox-small">
                            k1
                        </div>
                        <div id="s2" class="draggyBox-small">
                            k2
                        </div>
                    </div>
                    </center>
                    <table id="tablestyle">
                        <tr>
                        <td id="row1">
                            <div id="t1" class="ltarget"></div>
                        </td >
                        <td id="d1">
                            d1
                            </td >
                        </tr>
                        <tr>
                        <td id="row2">
                            <div id="t2" class="ltarget"></div>
                        </td >
                        <td id="d2">
                            d2
                            </td >
                        </tr>
                    </table>
                </center>
        </div>
    </center>
</div>"}

这是 saveContent 方法

function saveContent(){
        console.log("calling save content");
        var html_content = document.getElementById("generated_html_textarea");
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "/wordmatch", true);
        xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
        xhr.onreadystatechange = function()
        {
            if(xhr.readyState == 4 && xhr.status == 201) {
                console.log("content saved");
            }
            else{
                console.log("content was not save successfully");
            }
        }
        console.log('{"content":\"'
                +html_content.value+'\"}');
        xhr.send('{"content":\"'
                +html_content.value+'\"}');
    }

不要通过连接字符串来创建 JSON。您没有正确转义所有嵌套引号,将换行符转换为 \n,等等

在 JavaScript 对象上使用 JSON.stringify()

xhr.send(JSON.stringify({content: html_content.value}));