【问题标题】:HTML string gets extra newline character if sent from server to client如果从服务器发送到客户端,HTML 字符串会获得额外的换行符
【发布时间】:2017-02-10 07:00:42
【问题描述】:

我在处理字符串时遇到问题。我有一些用 java 编写的代码,它将使用 xls 翻译器为我生成一些 html - 以字符串形式。

我使用 spring 框架将此字符串传达回我的 Web 代码,但是当字符串到达​​ javascript 时,它会失败并出现“无效或意外令牌错误。此外,当字符串写入控制台时,似乎字符串现在包含每个新标签的换行符。

对于我的 javascript,我真的需要 html 全部为一行。 这是一些代码位:

    try {
        SimpleResultSet rs = dbClient.executeQuery("select MediaContent from call where id = " + callID);
        if (rs.next()) {
            media = rs.getString("MediaContent");
            mimeType = rs.getString("MediaTypeID");

            if(media.startsWith("<?xml")) {
                trace.info("XSLT: " + xltString);
                trace.info("Database XML: " + media);
                media = Transform(media, xltString, response);
                //trace.info("result HTML: " + media);

                if (!media.isEmpty()) {
                    media = media.replaceAll("\n\r", "")
                        .replaceAll("\n", "")
                        .replaceAll(System.lineSeparator(), "");
                }
            }

            //media = media.replaceAll("\"","\\\\\"");

        }
    } catch (DBException e) {
        trace.warning("Failed to get call content media for call id = " + callID, e);   
        return media;
    }
    trace.info("cleaned HTML: " + media);
    return media == null ? "" : media; 
}

此时,打印出清理过的 HTML 的跟踪,将字符串全部显示在一行上,没有任何换行符。然后将字符串传播到 ModelAndView,如下所示:

return new ModelAndView("media", "media", mediaStr);

在 javascript 方面:

<script>
    var contentString =  "${media}";
    document.getElementById("mediaContentIFrame").srcdoc = contentString;

是 javascript 端的 contentString 变量因无效或意外令牌错误而失败。 contentString 用于初始化 IFrame 的 srcdoc 属性。

【问题讨论】:

  • 你能说明如何从后端调用数据吗?你的 Javascript 代码。
  • 你已经添加了两个检查\r\n和\n..还要添加\r
  • 我已经更新了原始帖子,内容是如何在 javascript 中使用 contentString 来初始化 IFrame。将试用 \r 选项并在一分钟内提供反馈。
  • \r 选项似乎有效 - 当字符串到达​​ javascript 时,它不再包含换行符,但是 javascript 现在当然希望 " 字符似乎被转义。
  • @DirtyDeveloper - 删除 \r 字符解决了这个问题。如果你想把它放在答案中,我可以这样标记。

标签: javascript java spring modelandview


【解决方案1】:

您已经添加了两个检查 \r\n 和 \n.. 还添加了 \r,我希望它会开始工作:)

【讨论】:

    猜你喜欢
    • 2014-09-16
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 2016-06-12
    • 2020-08-08
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多