/**
 * 该脚本用于加载更多数据
 * @author rww
 * @date 2017/02/24
 */
window.onload = function(){
	/*
	 {
		page : 1,	// 请求页
	 	functionSwitch : 1,	//整体功能开关
	 	ajaxUrl : "",	//请求数据地址
	 	loadStatusEleId : "loadPrompt" //加载状态显示元素类名
	 	targetElementId : "targetUl", //返回数据填充元素id
	 	loadSwitch : 1,	//是否允许加载数据
	 }
	 */
	function loadMore(param){
		for (var i in param) {
			this[i] = param[i];
			if (i != "functionSwitch" && !param[i]) {
				console.log("参数配置:"+i+"不能为空");
			}
		}

		this.statusDiv = document.querySelector("#"+this.loadStatusEleId);	//供全部方法使用
	}
	
	//通过原型增加方法
	loadMore.prototype = {
			constructor : loadMore,

			//初始化
			init : function(){	//初始化插件
				if (!this.functionSwitch) {	//如果整体功能关闭,不在继续执行
					return false;
				}
				
				this.listenScroll();
				
			},

			//监听滚动
			listenScroll : function(){
				var self = this;
				window.addEventListener("scroll",function(){
					if (self.functionSwitch && self.loadSwitch && self.checkIfToLoad()) {	//如果已经滚动到位
							self.loadData();
					} 
				});
			},
			
			//检查是否能够加载
			checkIfToLoad : function() {
				 var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
				 var windowHeight = document.documentElement.clientHeight;
				 var scrollHeight = document.documentElement.scrollHeight;
				 if (scrollTop + windowHeight > scrollHeight - 300) {
					 return true;
				 } else {
					 return false;
				 }
			},
			
			//加载数据
			loadData : function(){
				var self = this;
				self.loadSwitch = false;	//加载数据时将该参数关闭
				var xmlhttp=null;
				
				if (window.XMLHttpRequest) {
					xmlhttp=new XMLHttpRequest();
				} 
				
				if (xmlhttp != null) {
					xmlhttp.onreadystatechange = function(e){
						self.statusDiv.classList.add("loading");
						if (this.readyState==4) {// 4 = "loaded"
							if (this.status==200) {
								for (var i = 0; i < 3000; i++){
									console.log(1);
								}
								self.loadSwitch = true; //请求成功将开关再次开启
								self.statusDiv.classList.remove("loading");
								if (this.response != "false") {
									self.appendHtml(this.response);
								} else {
									self.functionSwitch = false;
									self.statusDiv.classList.add("loaded");
								}
								self.page++;
							}else {
								alert("Problem retrieving XML data");
							}
						}
				    }
					//POST方式发送数据
				    xmlhttp.open("POST",self.ajaxUrl,true);
				    xmlhttp.responseType = "text";
					xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
				    var formData = 'page='+self.page;
				    xmlhttp.send(formData);
				} else {
					alert("Your browser does not support XMLHTTP.");
				}
				
			},

			//追加html到页面中。文档片段,一次性append,提高性能
			appendHtml : function(html){
				var divTemp = document.createElement("div"), 
					nodes = null,
					fragment = document.createDocumentFragment();
				divTemp.innerHTML = html;
				nodes = divTemp.childNodes;
				var nlength = nodes.length;

				for (var i=0, i<nlength; i+=1) {
				   fragment.appendChild(nodes[i].cloneNode(true));
				}

				document.getElementById(this.targetElementId).appendChild(fragment);
				nodes = null;
				fragment = null; 
			}
			
	}
	
	//实例化对象
	var loadInstance = new loadMore(
			{
				page : 2,	// 请求页
			 	functionSwitch : 1,	//整体功能开关
			 	ajaxUrl : "/index.php?c=Ajax_My_Main&a=MyQuestion",	//请求数据地址
			 	loadStatusEleId : "loadPrompt", //加载状态显示元素类名
			 	targetElementId : "targetUl", //返回数据填充元素id
			 	loadSwitch : 1,
			}
	);
	loadInstance.init();
}

先把代码放在这里,有兴趣的可以读一下。具体说明我以上再详细。