为什么 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');
我正在尝试 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');