模仿百度新闻列表底部的“加载更多”
时间:2022-05-07
本文章向大家介绍模仿百度新闻列表底部的“加载更多”,主要内容包括前言、详情、尾声、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
前言
自从上个月来到了学校的信息化中心实习后自由安排的时间越来越少,遂好久没来更新博客了。 昨天在完成一个模仿手机端百度新闻列表底“点击加载更多”的功能时,由于第一次写ajax与后端交互,遇到了几个坑,现在逐一来分享。
详情
- 后端提供给我的一个用json传递内容的接口,接口地址类似于
http://xxxxxxxxx&category=xx&count=xx
,category代表新闻的类型,一共有三种,不同的类型对应的列表不同,而count代表当前的页面上已有的新闻条数。 在与写后端的老师的交流中,得知了老师在新闻列表界面是通过将类型放入url来实现的,一共三种url,于是他的三种新闻的列表地址就是http://xxxxxxxx/getlist/x
,最后一个字符(1/2/3)代表类型。于是我想到了一个奇巧淫技,通过BOM获取当前的浏览器的url,然后正则获取url的最后一位,于是解决了分类的问题。 当前页面的新闻的形式是一个无序列表,于是通过DOM获取无序列表里的li
元素,得到的是一个数组,该数组的长度就是现在页面上的新闻的条数。 - 接下来的坑是ajax,jQuery将ajax封装了一遍,又将用json交互的ajax封装了一遍,即getJSON,感觉查到的手册里关于这一方法讲的并不是很好,于是在博客园中找到了这篇文章Jquery getJSON方法分析(一) - 梅桦 - 博客园,看完以后豁然开朗。 我这次的案例中后端的json格式是这样的, [{"url":"url1","title":"title1","pub_date":"1"},{"url":"url2","title":"title2","pub_date":"2"}] 于是我的核心部分代码如下:
$.getJSON("http://xxxxxxx/getmorenews?category=" + category + "&count=" + count, function(news) {
if (news == "") { //判断是否有内容
$(".ui-refresh").html('已无更多');//提示没内容
} else {
$.each(news, function(k, v) {
var addHtml = ""; //每个循环都单独来一遍
$.each(v, function(kk, vv) {
switch (kk) {
case "url": addHtml += '<li class="am-g am-list-item-dated"><a href="' + vv +'" class="am-list-item-hd ">';break;
case "title": addHtml += vv +'</a><span class="am-list-date">';break;
case "pub_date": addHtml += vv + '</span></li>';break;
}
});
$(".am-list").append(addHtml);
$(".ui-refresh").html('点击加载更多'); //按钮提示还没结束呢
});
}//判断部分end
});
3.在chrome里调试时,还遇到了一个问题,ajax跨域请求被chrome拦截,在xss钩子遍地都是的网上,禁止ajax跨域确实能大幅提高安全,当然在开发和调试时会带来一些小问题。chrome报错信息如下:
XMLHttpRequest cannot load http://xxxxxxxx/getmorenews?category=2&count=15. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
解决方案也很简单,修改chrome的快捷方式的属性中的目标,假设原来是"C:Program Files (x86)GoogleChromeApplicationchrome.exe"
,在后面添加 --disable-web-security
,添加后是"C:Program Files (x86)GoogleChromeApplicationchrome.exe" --disable-web-security
,注意空格。然后重启chrome,chrome提醒命令行标记不受支持,安全性会下降就成功了。建议平时不要使用这个快加方式启动chrome,会降低chrome防止xss攻击的能力。
尾声
唔,你可能已经发现了,我用了amaze ui,一个类似bootstrap的框架。在对bootstrap审美疲劳后,发现了amaze ui,还是挺喜欢它的ui的,等段时间来用amaze ui 做一个hexo的主题。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 如何在C中定义多行宏定义?
- flutter Icon可以用Image替换
- 如何在C中传递二维数组作为参数?
- volatile相关知识
- c语言二级指针的使用,malloc内存申请
- istio部署模型
- 你所不知道的printf函数
- c语言之——整型的隐式转换与溢出检测
- Istio 的配置分析
- (C99)复合字面量
- 排障集锦:九九八十一难之第十三难!-------------史上最全MySQL 单实例故障排查
- c语言数组越界的避免方法
- 单片机的存储区范例
- 大点干!早点散----------Nginx+Tomcat动静分离
- 大点干!早点散----------深入剖析缓存加速--squid传统代理和透明代理