zoukankan      html  css  js  c++  java
  • Ajax两种方式封装及举例

    function myAjax(obj){
    	if(obj.textType=="Jsonp"){
    		myAjaxAcross(obj);//跨域访问
    	}else{
    		myAjaxNormal(obj);//普通访问
    	}
    }
    
    function myAjaxNormal(obj){
    	//初始对象
    	var defaults={
    		type:"post",
    		url:"#",
    		data:{},
    		textType:"text",
    		async:true,
    		success:function(data){}
    	}
    	for(var key in obj)
    		defaults[key]=obj[key];
    	//获取url后缀
    	var params="";
    	for(var attr in obj.data){
    		params+=attr+"="+obj.data[attr]+"&";
    	}
    	if(params)
    		params=params.substr(0,params.length-1);
    	//ajax
    	var xhr=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
    	if(defaults.type=="get"){
    		xhr.open("get",defaults.url+"?"+params,defaults.async);
    		xhr.send(null);
    	}else{
    		xhr.open("post",defaults.url,defaults.async);
    		xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    		xhr.send(params);
    	}
    	if(defaults.async){
    		xhr.onreadystatechange=function(){
    			end();
    		}
    	}else{
    		end();
    	}
    	//获取php返回值
    	function end(){
    		if(xhr.readyState==4)
    			if(xhr.status==200){
    				var result="";//php返回值
    				if(defaults.textType=="json")
    					result=JSON.parse(xhr.responseText);
    				else if(defaults.textType=="xml")
    					result=xhr.responseXML;
    				else
    					result=xhr.responseText;
    				defaults.success(result);
    			}
    	}
    }
    function myAjaxAcross(obj){
    	//初始对象
    	var defaults={
    		type:"get",
    		url:"#",
    		data:{},
    		Jsonp:"callback",
    		JsonpCallback:"hihi",
    		success:function(data){}
    	};
    	for(var key in obj)
    		defaults[key]=obj[key];
    	//获取url后缀
    	var params="";
    	for(var attr in defaults.data)
    		params+=attr+"="+defaults.data[attr]+"&";
    	if(params)
    		params=params.substr(0,params.length-1);
    	//创建script
    	var script=document.createElement("script");
    	script.src=defaults.url+"?"+params+"&"+defaults.Jsonp+"="+defaults.JsonpCallback;
    	//console.log(script.src);
    	//https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=ja&cb=hihi
    	var head=document.querySelector('head');
    	head.append(script);
    	//回调
    	window[defaults.JsonpCallback]=function(data){
    		defaults.success(data);
    		//console.log(data);
    	}
    }
    
    //验证邮箱的php代码
    <?php 
    	$email = $_POST["e"];
    	if($email == 'zhangsan@qq.com') {
    		echo "Yes";
    	} else {
    		echo "No";
    	}
     ?>
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title>ajax封装</title>
    		<script type="text/javascript" src="myAjax2.js"></script>
    		<script type="text/javascript">
    			window.οnlοad=function(){
    				var email=document.getElementById("email");
    				email.οnkeyup=function(){
    					var value=email.value;//输入内容
    					var emailTip=document.getElementById("emailTip");
    					myAjax({
    						type:"post",
    						url:"php/checkEmail.php",
    						data:{e:value},
    						textType:"text",//php传回类型
    						async:true,
    						success:function(data){
    							emailTip.innerText=data;
    						}
    					});
    				};
    				var key=document.getElementById("key");
    				key.οnkeyup=function(){
    					var keyWord=key.value;
    					myAjax({
    						type:"get",
    						url:"https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su",
    						data:{wd:keyWord},
    						textType:"Jsonp",
    						Jsonp:"cb",
    						JsonpCallback:"hihi",
    						success:function(data){
    							//console.log(data);
    							var lis="";
    							for(var i=0;i<data.s.length;i++){
    								lis+="<li>"+data.s[i]+"</li>";
    							}
    							var results=document.getElementById("results");
    							results.innerHTML=lis;
    						}
    					});
    				}
    			}
    		</script>
    	</head>
    	<body>
    		<input type="email" name="email" id="email" placeholder="请输入验证邮箱"/> <span id="emailTip"></span>
    		<br />
    		<input type="text" id="key" placeholder="请输入搜索关键词"/>
    		<ul id="results"></ul>
    	</body>
    </html>
    
  • 相关阅读:
    爬虫|如何在Pycharm中调试JS代码
    nexus 6p 输入8.1和获取root权限
    年近30的我,离开了北京,回家做个老百姓,等待那一刻的发生!
    Azure认知服务的实际应用-资讯采集推送
    C#类库推荐 拼多多.Net SDK,开源免费!
    [翻译]EntityFramework Core 2.2 发布
    4-如何学习和解决问题
    3-WIN10系统及开发工具支持
    2-选择学习的目标和方向
    1-编程的基本条件和起步
  • 原文地址:https://www.cnblogs.com/aeipyuan/p/12285304.html
Copyright © 2011-2022 走看看