Ajax应用

Ajax应用



一、瀑布流的ajax应用(乐乎网站有瀑布流的案例)

1、制作原理
  • 列等宽型瀑布流:花瓣网
  • 画图说明
2、准备的文件
  • 数据文件接口
  • ajax函数(已经封装好)   
3、函数的编写

布局:
   
   
  1. <body>
  2. <ul id="ul1">
  3. <li>
  4. <div>
  5. <img src="http://www.wookmark.com/images/thumbs/625287_wookmark.jpg"/>
  6. <p>Home | Sampoerna University</p>
  7. </div>
  8. </li>
  9. <li></li>
  10. <li></li>
  11. <li></li>
  12. </ul>
  13. </body>
样式:
    
    
  1. <style>
  2. body {margin: 0;}
  3. #ul1 {width: 1080px; margin: 100px auto 0;}
  4. li { width: 247px; list-style: none; float: left; margin-right: 10px; }
  5. li div {border: 1px solid #000; padding: 10px; margin-bottom: 10px;}
  6. li div img { width: 225px; display: block;}
  7. </style>
准备文件:ajax.js和数据文件接口(后台给你的文件)
    
    
  1. function ajax(method, url, data, success) {
  2. var xhr = null;
  3. try {
  4. xhr = new XMLHttpRequest();
  5. } catch (e) {
  6. xhr = new ActiveXObject('Microsoft.XMLHTTP');
  7. }
  8. if (method == 'get' && data) {
  9. url += '?' + data;
  10. }
  11. xhr.open(method,url,true);
  12. if (method == 'get') {
  13. xhr.send();
  14. } else {
  15. xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
  16. xhr.send(data);
  17. }
  18. xhr.onreadystatechange = function() {
  19. if ( xhr.readyState == 4 ) {
  20. if ( xhr.status == 200 ) {
  21. success && success(xhr.responseText);
  22. } else {
  23. alert('出错了,Err:' + xhr.status);
  24. }
  25. }
  26. }
  27. }
php函数: getPics.php
     
     
  1. <?php
  2. header('Content-type:text/html; charset="utf-8"');
  3. /*
  4. API:
  5. getPics.php
  6. 参数
  7. cpage : 获取数据的页数
  8. */
  9. $cpage = isset($_GET['cpage']) ? $_GET['cpage'] : 1;
  10. $url = 'http://www.wookmark.com/api/json/popular?page=' . $cpage;
  11. $content = file_get_contents($url);
  12. $content = iconv('gbk', 'utf-8', $content);
  13. echo $content;
  14. ?>


函数的编写1:
    
    
  1. <script src="ajax.js"></script>
  2. <script>
  3. window.onload = function() {
  4. var oUl = document.getElementById('ul1');
  5. var aLi = oUl.getElementsByTagName('li');
  6. var iLen = aLi.length;
  7. var iPage = 1;
  8. var b = true;
  9. //初始化数据处理
  10. getList();
  11. function getList() {
  12. ajax('get','getPics.php','cpage=' + iPage,function(data) {
  13. var data = JSON.parse(data);
  14. if ( !data.length ) {
  15. //后续没有数据了
  16. return ;
  17. }
  18. for ( var i=0; i<data.length; i++ ) {
  19. //获取高度最短的li
  20. var _index = getShort();
  21. var oDiv = document.createElement('div');
  22. var oImg = document.createElement('img');
  23. oImg.src = data[i].preview;
  24. oImg.style.width = '225px';
  25. oImg.style.height = data[i].height * ( 225 / data[i].width ) + 'px';
  26. oDiv.appendChild( oImg );
  27. var oP = document.createElement('p');
  28. oP.innerHTML = data[i].title;
  29. oDiv.appendChild( oP );
  30. aLi[_index].appendChild( oDiv );
  31. }
  32. b = true;
  33. });
  34. }
  35. window.onscroll = function() {
  36. var _index = getShort();
  37. var oLi = aLi[_index];
  38. var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
  39. if ( getTop( oLi ) + oLi.offsetHeight < document.documentElement.clientHeight + scrollTop ) {
  40. if ( b ) {
  41. b = false;
  42. iPage++;
  43. getList();
  44. }
  45. }
  46. }
  47. function getShort() {
  48. var index = 0;
  49. var ih = aLi[index].offsetHeight;
  50. for (var i=1; i<iLen; i++) {
  51. if ( aLi[i].offsetHeight < ih ) {
  52. index = i;
  53. ih = aLi[i].offsetHeight;
  54. }
  55. }
  56. return index;
  57. }
  58. function getTop(obj) {
  59. var iTop = 0;
  60. while(obj) {
  61. iTop += obj.offsetTop;
  62. obj = obj.offsetParent;
  63. }
  64. return iTop;
  65. }
  66. }
  67. </script>
效果如下:
 花瓣网效果:
 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值