响应类型用html和json没区别?

响应类型用html和json没区别?

课程采用:response.setContentType("text/json;charset=utf-8");

练习采用:response.setContentType("text/html;charset=utf-8");

测试结果:两者结果是一样的

服务器响应给浏览器的是json格式的字符串,并不是真正的json格式,用html和json都能正常运行?所以text/json不是这么用的吧?

正在回答

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

1回答

同学你好,如果只是返回简单的字符串,那么效果确实是一样的。但是也只是效果一样,并不是原理一样。

当设置为json时,返回的字符串会优先按照json的格式进行解析,如果不能解析或者不需要解析,就会将字符串原意输出。

当设置为html时,返回的字符串会按照html语法解析,尤其是其中拼接的标签字符串也会按照标签解析而不是原意输出。

课程中最后输出的是json串,只不过在浏览器页面中进行展示的时候并不会将其自动格式化,如果将其输出到浏览器的console中再展示,就会看到格式化的效果了。

祝学习愉快~

  • 坨坨儿 提问者 #1

    一、无论采用:response.setContentType("text/json;charset=utf-8"); 返回JSON字符串

    还是采用:response.setContentType("text/html;charset=utf-8"); 返回JSON字符串

         1、原始xmlhttp.responseText收到的内容,在控制台仍为字符串格式,并不是格式化效果

         2、采用axios插件后,response.data收到的内容,在控制台始终是格式化效果

    二、浏览器页面展示效果是由JS控制的,终归是要调用JSON.parse()方法进行转化,说明收到的始终是字符串,而不是JSON格式

    三、请老师贴下后台采用上述两种响应格式能看到不同效果的代码,因为实在没调试出来效果,没看到区别。

    2024-02-16 15:50:27
  • 好帮手慕小蓝 回复 提问者 坨坨儿 #2

    同学你好,同学可能没有完全理解老师上面的回答的意思:

    1.json本身就是字符串,只不过是格式语法特殊的字符串。

    2.浏览器页面不会将字符串(json也一样)进行格式化(换行、缩进等)

    3.控制台会将特殊格式字符串格式化,例如json和数组等,其他字符串原状输出

    所以,无论是否是json,输出到页面都不会有缩进换行。但是如果是json,输出到控制台就会被格式化,出现缩进换行。这与使用什么代码是没有关系的。

    也就是说,浏览器页面上看到的形式并不能确定字符串是否符合json语法,实际开发的时候不会输出到浏览器页面的,会使用控制台,这样可以清晰的看到格式化的形式。

    祝学习愉快~

    2024-02-16 16:37:29
  • 坨坨儿 提问者 回复 好帮手慕小蓝 #3

    先不管浏览器页面吧,问题在于,按您说的,就算控制台上,无论采用text/json还是text/html,输出都一样的呢,恳请老师贴下关键代码,我好知道区别在哪里?

    2024-02-16 16:57:41
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
Java工程师 2024版
  • 参与学习       2020    人
  • 提交作业       1249    份
  • 解答问题       1202    个

2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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