我试图发布此表单:
<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返回字符串?
答案 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');