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

时间:2015-08-13 11:32:50

标签: javascript jquery eol

我试图发布此表单:

<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())

返回"line1\nline2\nline3"

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

那么为什么 jquery.serialize 会将\n编码为%0D%0A?有没有办法让{em>序列化使用%0A EOL返回字符串?

2 个答案:

答案 0 :(得分:2)

这是设计使然,请参阅here

  

在序列化文本时,根据application / x-www-form-urlencoded规范将所有换行符编码为CRLF对。

says

  

换行符表示为&#34; CR LF&#34;对(即'%0D%0A&#39;)。

-

  

有没有办法使用%0A EOL进行序列化返回字符串?

除了在序列化后手动删除%0D之外没有。

答案 1 :(得分:0)

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

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

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