用原生JS、CSS、HTML仿制的V2EX社区主页#第一遍

该博客主要记录了作者在使用原生JavaScript、CSS和HTML仿制V2EX社区主页时遇到的问题及解决方案。在JS部分,主要问题是AJAX的跨域引用API和JSON中文部分的Unicode处理;在CSS方面,遇到了服务器上运行时DOM生成的HTML样式失效和box-shadow显示不一致的问题。作者计划学习如何正确解析AJAX返回的Unicode和解决DOM样式问题,并重新制作‘今日热议主题’部分。最后,分享了通过后台PHP解决跨域获取第三方API的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
目前页面布局和样式没有太大的问题,最主要的问题是在JS的部分。
本身社区的风格就很简洁,没有什么花里胡哨的特效,页面交互也很简单,做起来并不像电商页面那样复杂。
目前最大的问题出现在ajax的部分。

问题总结:

ajax问题
还无法实现跨域引用api,而是直接复制了网站提供的api,在本地服务器中访问。
通过ajax访问api的时候,json中中文部分的unicode会变成undefined,目前还没找到解决方法。但问题应该就是出在var arr=eval(str);这一步,因为在这之后直接alert(arr[0].member.title)(主题中文标题)的时候,返回值就是undefined,把eval()替换成JSON.parse也不行,或许不应该用这种方式直接将ajax返回的字符串转为对象。
问题代码:
在这里插入图片描述
样式问题
在服务器上运行时,通过DOM生成的html的样式失效了,包括没在服务器上运行时可以显示的样式一并失效了。
不用服务器运行
在这里插入图片描述
使用服务器运行
在这里插入图片描述

另一个关于样式的小问题,有时给div添加box-shadow会没有效果,有时又有效,不知是否是因为设置其它div样式时产生了冲突。

查漏补缺

之后着重要学习和解决的是:

  • 将ajax返回值变为对象,并且能够正常读取unicode的方法;
  • DOM生成的html的样式无法显示的问题。

之后的任务:
单独重做“今日热议主题”这一块,并解决此次ajax和css产生的问题。
------------------------------这是一条分割线----------------------------------
今天用console.log()在后台看了一下ajax返回的值才发现,会出现undefined的情况是因为我的引用错误,不是arr[i].member.title而是arr[i].title,而样式也恢复正常,只是因为服务器会缓存样式,需要比较长的时间才能够渲染更新。
总结就是细节决定一切!
不过还是没有进行跨域引用api。

-----------------------------这是另一条分割线---------------------------------
跨域使用第三方api最简洁方法:
ajax配合后台php获取第三方api实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值