总的模板如下:
<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端做数据的处理.