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

  • 相关阅读:
    《MySQL必知必会》第六章:过滤数据
    《MySQL必知必会》第七章:数据过滤
    《MySQL必知必会》第五章:排序检索数据
    Java高级特性:clone()方法
    Java基础知识详解:abstract修饰符
    Java虚拟机:虚拟机内存区域和内存溢出异常
    Java虚拟机:源码到机器码
    Java虚拟机:本地方法栈与Native方法
    [LeetCode] 1481. Least Number of Unique Integers after K Removals
    [LeetCode] 331. Verify Preorder Serialization of a Binary Tree
  • 原文地址:https://www.cnblogs.com/dadifeihong/p/12033308.html
Copyright © 2011-2022 走看看