根据此回答https://stackoverflow.com/a/2115554/2311074我认为json_encode
将换行符存储为\n
或\r\n
取决于操作系统。但是我今天发现我可以在同一操作系统(Ubuntu)上使用json_encode
生成两个输出。
考虑示例
<form id='form'>
<textarea id='amd' name='stuff'></textarea>
</form>
<button id='lol'>Press Me</button>
使用jQuery
$( document ).ready(function() {
$('#lol').click(function(){
var text = $('#amd').val();
$.ajax({
type: "POST",
url: ajax.php,
data: {stuff: text}
});
});
以及以下ajax.php
$text = $_POST['stuff'];
file_put_contents('test.txt', json_encode($text));
现在进入以下
将在text.txt
&#34;这是一个\ nbreak up&#34;
但是,如果我将jQUery脚本中的数据更改为
data: $('#form').serialize()
然后我在text.txt
&#34;这是一个\ r \ n破解&#34;
为什么serialize()会为我的换行符生成额外的\r
\ n?我甚至没有使用Windows。
答案 0 :(得分:1)
所以答案很简单。 jQuery serialize()
正在添加\r\n
,因为它的开发人员对此进行了编码。您可以在jquery github中看到代码。它们会将所有/\r?\n/g
替换为\r\n
。