2015-08-13 123 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

糟糕,修復它,謝謝。 –

相關問題