Ajax 发送并添加隐藏字符

Ajax send and adds hidden characters

我想从一个 php 站点向另一个站点发送内容。 在第一个站点,一切似乎都很好。 字符串看起来像

--show="author,book,text/n

但是当我收到字符串后检查它看起来像

--show="author,book,text/r/n

有问题,不知何故最后添加了/r

第一个php:

$(document).ready(function() {
    $("#column_button").click(function(){
        var selected = [];
        $.each($("input[name='checkbox_columns']:checked"), function(){            
           selected.push($(this).val());
        });

        var data = new FormData();
        data.append("data", "--show=" + selected);
        //alert(JSON.stringify(selected));
        var ajax = (window.XMLHttpRequest) ? new XMLHttpRequest() : new activeXObject("Microsoft.XMLHTTP");
        ajax.addEventListener("load", statusHandler2, false);
        ajax.open( 'post', 'showParameter.php', true );
        ajax.send(data);
        _("column_button").disabled=true;        
    });
});

第二个php:

if(!empty($_POST['data'])){
    $data = $_POST['data'];}

So selected 显示正确,但是如果我在第二个 php 中检查 $data,它是错误的。

这似乎是服务器使用不同行尾类型的问题。 Unix 系统(Linux、BSD 等)默认使用 \nLF),MacOS 使用 \rCR),其中 Windows系统使用 \r\n(也称为 CRLF)。您可能需要将其中一台服务器上的字符编码更改为另一台服务器。

CR = 马车return LF = 换行

您可以使用仅将 CRLF 或 CR 替换为 LF 的代码。 This page 展示了如何简单地实现这一目标。