zoukankan      html  css  js  c++  java
  • ajax前后端交互原理(7)

    7.ajax函数封装

    7.1.实例引入

    需求: 每秒钟请求一次服务器 获取到数据

    实现: 把ajax进行封装

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    		<script src="ajax.js" type="text/javascript" charset="utf-8"></script>
    		<script type="text/javascript">
    			window.onload = function(){
    				var oBtn = document.getElementById("btn");
    				oBtn.onclick = function(){
    					setInterval(function(){
    						ajax("get",'getData.php','',function(data){
    							
    							var oUl = document.getElementById('ul1');
    							var html = ''
    							for(var i = 0; i < data.length; i++) {
    								var oli = document.createElement('li');
    								html += '<li>'+ data[i].title + '[' + data[i].time + ']</li>';
    								 
    							}
    							oUl.innerHTML = html;
    						});
    					},1000)
    				}
    			}
    		</script>
    	</head>
    	<body>
    		<input type="button" id="btn" value="获取数据" />
    		<ul id="ul1"> 
    			 
    		</ul>
    	</body>
    </html>
    

    7.2.ajax代码,普通封装:

    function ajax(method,url,data,sucess) {
    	//创建ajax对象
    	var xhr = null;
    	try {
    		xhr = new XMLHttpRequest();
    	} catch(e) {
    		xhr = new ActiveXobject('Microsoft.XMLHTTP');
    	}
    	
    	if(!method || method == "get"){
    		method = "get";
    		//打开要获取文件的地址
    		if(data){
    			url = url+"?"+data;
    		}
    		xhr.open(method, url, true);
    		//发送请求
    		xhr.send();
    		
    	}else{
    		method = "post";
    		xhr.open(method, url, true);
    		if(data){
    			//发送请求
    		    xhr.send();
    		}else{
    			 xhr.send(data);
    		}
    		
    	}
    	
    	//alert(xhr.responseText);
    	//监听请求状态
    	xhr.onreadystatechange = function() {
    
    		if(xhr.readyState == 4 && xhr.status == 200) {
    			var data = JSON.parse(xhr.responseText);
    			 sucess && sucess();
    
    		}
    	}
    
    }
    

    7.3.ajax代码,封装成对象的传参的形式:

    function ajax(obj) {
    	//创建ajax对象
    	var xhr = null;
    	try {
    		xhr = new XMLHttpRequest();
    	} catch(e) {
    		xhr = new ActiveXobject('Microsoft.XMLHTTP');
    	}
    	
    	if(!obj.method || obj.method == "get"){
    		obj.method = "get";
    		//打开要获取文件的地址
    		if(obj.data){
    			obj.url = obj.url+"?"+obj.data;
    		}
    		xhr.open(obj.method, obj.url, true);
    		//发送请求
    		xhr.send();
    		
    	}else{
    		obj.method = "post";
    		xhr.open(obj.method, obj.url, true);
    		if(data){
    			//发送请求
    		    xhr.send();
    		}else{
    			 xhr.send(obj.data);
    		}
    		
    	}
    	
    	//alert(xhr.responseText);
    	//监听请求状态
    	xhr.onreadystatechange = function() {
    
    		if(xhr.readyState == 4 && xhr.status == 200) {
    			 var data = JSON.parse(xhr.responseText);
    			 obj.success && obj.success(data);
    
    		}
    	}
    
    }
    

    螺钉课堂视频课程地址:http://edu.nodeing.com

  • 相关阅读:
    vulnhub靶场 之 DC -1
    PHP反序列化中过滤函数使用不当导致的对象注入
    网络内生安全试验场-CTF答题夺旗赛(第四季)web知识
    BUUCTF 随便注
    SWPUCTF 2019 web
    春秋-SQLi题
    i春秋-“百度杯”CTF比赛 十月场-Login
    i春秋-第三届“百越杯”福建省高校网络空间安全大赛-Do you know upload?
    i春秋CTF-“百度杯”CTF比赛 九月场 XSS平台
    终于等到你,最强 IDE Visual Studio 2017 正式版发布
  • 原文地址:https://www.cnblogs.com/dadifeihong/p/12033308.html
Copyright © 2011-2022 走看看