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

2017-07-27  本文已影响0人  Jacqueline_JS

总的模板如下:

<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端做数据的处理.

上一篇 下一篇

猜你喜欢

热点阅读