为什么 jquery.serialize 将 LF 更改为 CRLF?

Why does jquery.serialize change LF to CRLF?

我正在尝试 post 这个表格:

<form id="the-form" enctype="multipart/form-data" >
    <textarea class="form-control" name="list" id="list"></textarea>
</form>

使用此脚本:

$.post( "/route", $('#the-form').serialize());

并且脚本的调试显示 JSON.stringify($('#list').val())

returns "line1\nline2\nline3"

while $('#the-form').serialize() returns wordlist=line1%0D%0Aline2%0D%0Aline3.

那么为什么jquery.serialize\n编码成%0D%0A呢?有没有办法用 序列化 return 字符串 %0A EOL?

这是设计使然,请参阅 here:

When serializing text, encode all line breaks as CRLF pairs per the application/x-www-form-urlencoded specification.

哪个says:

Line breaks are represented as "CR LF" pairs (i.e., `%0D%0A').

--

Is there a way to make serialize return string with %0A EOL?

None 除了在序列化后手动删除 %0D

正如 georg 所提到的,这是预期的功能。

您可以按如下方式替换序列化字符串中 %0D%0A 的实例:

var formVars = $('#the-form').serialize().replace(/%0D%0A/g, '%0A');