Ajax工作原理以及封装使用

1、什么是ajax?

ajax (异步编程的一种解决方案) 是一种用于创建快速动态网页的技术。
通过后台与服务器之间数据的少量交换,在不刷新页面的情况下,更新页面部分的数据。

2、工作原理?

相当于在浏览器(客户端)与服务器之间增加了一个中间层(ajax引擎),
使用户操作与服务器响应异步化,这样就可以把以前服务器的一些负担转嫁到客户端,
利用客户端闲置的处理能力来处理,从而减轻服务器负担和带宽。

//复制并运行代码,即可显示效果

3、封装原生ajax

function ajax(method,url,sendData,fnSucc,fnFaild) {
	var oAjax = null;
	if (window.XMLHttpRequest) {
		oAjax = new XMLHttpRequest();
	} else {
		oAjax = new ActiveXObject('Microsoft.XMLHTTP');
	}
	if (method == 'get') {
		url += '?' + sendData + '&' + new Date().getTime();
	}
	oAjax.open(method,url,true);
	if (method == 'get') {
		oAjax.send()
	} else {
		oAjax.setRequestHeader("content-type","application/x-www-form-urlencoded");
		oAjax.send(sendData);
	}
	oAjax.onreadystatechange = function () {
		if (oAjax.readyState == 4) {
			if (oAjax.status == 200) {
				if (fnSucc) { fnSucc(oAjax.responseText) }
			} else {
				fnFaild && fnFaild(oAjax.status)
			}
		}
	}
}

4、创建一个php文件(getPics.php)

<?php
header('Content-type:text/html; charset="utf-8"');
/*API:
	getPics.php
参数
	cpage : 获取数据的页数
*/
$cpage = isset($_GET['cpage']) ? $_GET['cpage'] : 1;
$url = 'http://www.wookmark.com/api/json/popular?page=' . $cpage;
$content = file_get_contents($url);
$content = iconv('gbk', 'utf-8', $content);
echo $content;
?>

5、创建一个index.html文件(效果为瀑布流)

---------------css样式

*{
	margin: 0;
	padding: 0;		
}
#list{
	list-style:none;
	width:1200px;
	margin:50px  auto;
}
#list li{
	float:left;
	margin-right:10px;
	width:230px;
	padding:10px;
}
img{
	display:block;
	width:230px;
}
div{
	width:230px;
	padding:10px;
	border:1px solid gray;
}

---------------------html布局

<ul id="list">
	<li>
		<div>
			<img src="http://www.wookmark.com/images/original/656338_wookmark.png" alt="">
		</div>
	</li>
	<li>
		<div>
			<img src="http://www.wookmark.com/images/original/656346_wookmark.jpg" alt="">
		</div>
	</li>
	<li>
		<div>
			<img src="http://www.wookmark.com/images/original/656338_wookmark.png" alt="">
		</div>
	</li>
	<li>
		<div>
			<img src="http://www.wookmark.com/images/original/656332_wookmark.jpg" alt="">
		</div>
	</li>
</ul>

------------------------js代码

var olist = document.getElementById("list");
	var ali = document.getElementsByTagName("li");
	var len = ali.length;
	var ipage = 1;
	var flag = true;
	getData();
	window.onscroll = function() {
		var ic = document.documentElement.clientHeight || document.body .clientHeight;
		var is = document.documentElement.scrollTop || document.body.scrollTop;
		var $index = getMin();
		var minH = ali[$index].offsetHeight;
		if(ic+is >= minH){
			ipage ++;
			getData();
		}
	}
	function getData(){
        ajax("get","getPics.php","cpage=" + ipage,function(data) {
            var oData = JSON.parse(data);
            var len1 = oData.length;
            for(var i=0;i<len1;i++){
                var _index = getMin();
                var oDiv = document.createElement("div");
                var oimg = document.createElement("img");
                oimg.src = oData[i].image;
                oimg.style.width = 230+"px";
                oimg.style.height = oData[i].height;
                var op = document.createElement("p");
                op.innerHTML = oData[i].title;
                oDiv.appendChild(oimg);
                oDiv.appendChild(op);
                ali[_index].appendChild(oDiv);
            }
        })
    }
	function getMin(){
		var index = 0;
		var minH = ali[0].offsetHeight;
		for(var i=1;i<len;i++){
			if(ali[i].offsetHeight < minH){
				index = i;
				minH = ali[i].offsetHeight;
			}
		}
		return index;
    }
    //将封装好的ajax引入在这里

猜你喜欢

转载自blog.csdn.net/weixin_43735788/article/details/84313500