美文网首页
关于通过ajax获取的php返回的数据中带换行符的问题

关于通过ajax获取的php返回的数据中带换行符的问题

作者: Jacqueline_JS | 来源:发表于2017-07-27 20:33 被阅读0次

    总的模板如下:

    <div></div>
    
    <script>
        
    $.ajax({
        type:"GET",
        url:"x.php",
        success:function(data){
                                         ---->监测点1在F12的x.php查看
            alert(data);                 ---->检测点2
            $("div").html(data);         ---->监测点3
        },
        error:function () {
            alert("发生错误");
        }
    });
    
    </script>
    

    情况一:

    若x.php为:
    echo "aa\nbb";
    结果为:

    1. aa\nbb
    2. aa\nbb
    3. aa\nbb
    

    情况二:

    若x.php为:
    echo "aa\nbb";
    结果为:

    1. aa换行bb
    2. aa换行bb
    3. aa空格bb
    

    情况三:

    若x.php为:
    echo "aa\rbb";
    结果为:

    1. aa换行bb
    2. aa换行bb
    3. aa空格bb
    

    总结:在js中接收自php数据时:\r 和 \n 的效果一样,都是在F12看到的数据变成换行,都是alert()变成换行,都是.html()变成空格;而\n则在F12时变成\n字样,在alert()时变成\n字样,在.html()时变成\n字样


    有了上面的总结,现在我们来实验一下,看看如果php中的echo 带有\r 或者 \n 或者 \r\n 我们应该如何处理:

    实验一:(这种做法仍然有换行)

    若x.php为:
    echo str_replace("\r\n","\n","aa\nbb\ncc");
    结果为:

    1. aa\nbb换行cc
    2. aa\nbb换行cc
    3. aa\nbb空格cc
    

    实验二:(这种做法仍然有换行)

    若x.php为:
    echo str_replace("\n","\n","aa\nbb\ncc");
    结果为:

    1. aa换行\nbb\ncc
    2. aa换行\nbb\ncc
    3. aa空格\nbb\ncc
    

    实验三:(这种做法很完美!)

    若x.php为:
    echo str_replace("\n","\n",str_replace("\r\n","\n","aa\r\nbb\ncc"));
    结果为:

    1. aa\nbb\ncc
    2. aa\nbb\ncc
    3. aa\nbb\ncc
    

    实验四:(这种做法仍然有换行)

    若x.php为:
    echo str_replace("\r\n","\n",str_replace("\n","\n","aa\r\nbb\ncc"));
    结果为:

    1. aa换行\nbb\ncc
    2. aa换行\nbb\ncc
    3. aa空格\nbb\ncc
    

    通过4个实验,我们发现如果想接收来自php传来的json数据,那么json数据对换行是非常敏感的,因为浏览器一旦接收自让它换行显示的数据的话,就不是json数据格式了,所以一定要在php端做数据的处理.

    相关文章

      网友评论

          本文标题:关于通过ajax获取的php返回的数据中带换行符的问题

          本文链接:https://www.haomeiwen.com/subject/tedtlxtx.html