Javascript 为什么jquery.serialize会将LF更改为CRLF?
我正在尝试发布此表单:Javascript 为什么jquery.serialize会将LF更改为CRLF?,javascript,jquery,eol,Javascript,Jquery,Eol,我正在尝试发布此表单: <form id="the-form" enctype="multipart/form-data" > <textarea class="form-control" name="list" id="list"></textarea> </form> 脚本的调试显示JSON.stringify($('#list').val()) 返回“line1\nline2\nline3” 而$(“#表单”).serialize(
<form id="the-form" enctype="multipart/form-data" >
<textarea class="form-control" name="list" id="list"></textarea>
</form>
脚本的调试显示JSON.stringify($('#list').val())
返回“line1\nline2\nline3”
而$(“#表单”).serialize()返回
wordlist=line1%0D%0Aline2%0D%0Aline3
那么为什么jquery.serialize会将\n
编码为%0D%0A
?是否有一种方法可以使用%0A
EOL序列化返回字符串?这是设计的,请参阅:
序列化文本时,根据application/x-www-form-urlencoded规范将所有换行符编码为CRLF对
其中:
换行符表示为“CR-LF”对(即,`%0D%0A')
--
是否有方法使序列化返回字符串具有%0A EOL
除了在序列化后手动删除%0D
,没有其他功能。如georg所述,这是预期的功能
您可以在序列化字符串中替换%0D%0A
的实例,如下所示:
var formVars = $('#the-form').serialize().replace(/%0D%0A/g, '%0A');
您因此遇到的实际问题是什么?多年来一直使用serialize()
,从未遇到断线问题。为什么:(它是这样编程的)只会替换第一个实例
var formVars = $('#the-form').serialize().replace(/%0D%0A/g, '%0A');