.serialize()方法将\ r \ n添加到换行符?

时间:2017-05-30 18:00:20

标签: php jquery

根据此回答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));

现在进入以下

enter image description here

将在text.txt

中撰写以下内容
  

&#34;这是一个\ nbreak up&#34;

但是,如果我将jQUery脚本中的数据更改为

data: $('#form').serialize()

然后我在text.txt

中找到以下内容
  

&#34;这是一个\ r \ n破解&#34;

为什么serialize()会为我的换行符生成额外的\r \ n?我甚至没有使用Windows。

1 个答案:

答案 0 :(得分:1)

所以答案很简单。 jQuery serialize()正在添加\r\n,因为它的开发人员对此进行了编码。您可以在jquery github中看到代码。它们会将所有/\r?\n/g替换为\r\n