关于多维数组json_encode与JSON.parse的问题,不得不问?!

关于多维数组json_encode与JSON.parse的问题,不得不问?!

http://img1.sycdn.imooc.com//climg/5c8e0fd500011da713480719.jpg

这里是视频里老师里的代码我打印了一下res请看截图:

http://img1.sycdn.imooc.com//climg/5c8e10740001134707410350.jpg

结果是报错,所以我进一步的验证到底是不是我的json_encode的结果不对,我就直接把res 的字符串中的除了<pre>的部分直接用来JSON.parse:

http://img1.sycdn.imooc.com//climg/5c8e12b90001218f13380726.jpg

这却能直接解析出结果:

http://img1.sycdn.imooc.com//climg/5c8e12eb0001bb1c07390156.jpg

这到底是为啥?

求指教啊!!!


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕查理 2019-03-18 18:28:15

您好,三种方案:1.在前端使用正则将<pre>进行过滤。下列代码可以匹配是否有<pre>标签。

var reg = /<pre>/g;
var result = response.match(reg);

2.将users.php中的:

header('Content-type: application/json');

改为:

header('Content-type: text/html');

3.请反馈全部的运行代码,我们需要测试你的代码存在问题还是浏览器解析产生的问题。

祝学习愉快!

  • 提问者 轩辕小齐V #1
    老师这里应该用replace吧? response.replace(/<?*.>/g,''); 但是学生我并不知道header('Content-type: application/json');与header('Content-type: text/html');有什么作用?我直接全部删除,js端也能正常显示,这个地方求指教。我再解释下用不用header 都能用,而且用其中任何一个也都好用,所以只要在js端删除<pre>,就好用了,我就不理解了,为啥老是不需要删除?而且我一个一个文件搜索了没有加<pre>,代码我就是直接用老师的源码啊。
    2019-03-18 18:37:33
  • 好帮手慕查理 回复 提问者 轩辕小齐V #2
    您好,使用replace可以,将<pre>标签去除即可。header('Content-type: application/json');发送http请求,告诉浏览器发送的内容类型是json。header('Content-type: text/html');发送http请求,告诉浏览器发送的内容类型是html。出现<pre>是因为不同浏览器对返回数据处理的问题。祝学习愉快!
    2019-03-19 10:54:32
好帮手慕查理 2019-03-18 14:10:36

您好,pre标签并不是json字符串中的内容,在使用JSON.parse()方法将数据转换为 JavaScript 对象时自然会失败。请去除pre标签。祝学习愉快!

  • 提问者 轩辕小齐V #1
    老师。。。。我问的 就是为啥json_encode为啥带<pre>啊。。。我以为是浏览器console.log的优化,结果不是啊,还有啊为啥老师视频里的没有这个问题啊,求解答,网上搜了很多遇到这个问题的,但是为啥老师没有遇到呢?Chrome与火狐都有这个<pre>
    2019-03-18 16:17:58
  • 提问者 轩辕小齐V #2
    我也想去掉啊,这是我加的么。。。。不是啊。。。。自带的啊
    2019-03-18 16:18:45
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师