2015-08-13 33 views
0

我试图张贴这种形式:为什么jquery.serialize将LF更改为CRLF?

<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?有没有办法使序列化返回字符串与%0A EOL?

+1

什么是您所遇到的这一结果的实际问题?已使用'serialize()'多年,从来没有换行问题 – charlietfl

+0

那就是为什么:https://github.com/jquery/jquery/blob/a644101ed04d0beacea864ce805e0c4f86ba1cd1/src/serialize.js#L108(它的编程方式) – birdspider

回答

2

这是由设计,参见here

当序列化文本,编码所有换行符根据应用/ X WWW的窗体-urlencoded规范CRLF对。

其中says

换行符被表示为 “CR LF” 对(即,'%0D 0A%')。

-

有没有办法让序列化收益字符串%0A EOL?

除了序列化后手动删除%0D之外,

0

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

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

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

只会替代第一个实例 – charlietfl

+0

糟糕,修复它,谢谢。 –

相关问题