首页 > 解决方案 > 通过javascript提取文本时如何在textarea上保留文本\r\n格式

问题描述

长话短说,我有一个文本区域,我想用正确的换行符保留格式。我通过以下 javascript 调用获取文本区域的值。

var letterText = document.getElementById("cnl-lettertext").value;

之后,我通过 Ajax 调用和 rest api 将其发送到数据库中。由于某种原因,当我设置它时,我似乎无法让它在变量中保留 \r\n 字符或换行符。

我已经尝试在我的 css 上设置 white-space: pre ,但这似乎不起作用。我也不想只使用 .replace ,因为这会破坏其他功能。

阿贾克斯调用:

$.ajax({
    url : url, //url is built dynamically for a rest api.
    timeout : 5000,
    dataType : "json",
    statusCode : {  },
    success : function(data) {
                            
    
    }
});

标签: javascriptformattingtextarea

解决方案


当您向带有换行符的 URL 发送请求时,浏览器将删除那些与 URL 不兼容的换行符。它们需要被编码。

您可以使用 手动执行此操作encodeURIComponent,但由于您使用的是 jQuery,因此请利用它,并使用data选项以正确的方式传递查询参数。它们将被 jQuery 正确编码:

$.ajax({
    url : 'https://www.example.com/endpoint', // don't add query params here
    timeout : 5000,
    dataType : "json",
    data: { // Add them here, they will be encoded automatically
      letterText: letterText,
      // ...
    },
    statusCode : {  },
    success : function(data) {}
});

推荐阅读