原生js的ajax数据渲染

ajax应用不只是页面功能的提升,也是性能优化的一种方式。

兼容这块的话就是其ajax对象,在ie和其他浏览器的不同,那么现在基本上w3c已经给出了兼容的写法

var xmlhttp;
if(window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();}
else{xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');}

然后就是发送,和 异步的填写

xmlhttp.open("GET","ajax.txt",true);
xmlhttp.send();

然后基于返回的参数值来写事件

if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
//这里面就是我们写的事件。
}
那么这个请求我们得到了什么?

xmlhttp.responseText

这个就是我们请求的东西,比如上面我们请求的对象是ajax.txt,那么我们的xmlhttp.resposeText就是请求的值。这个值就是整个txt所有的文字。如何这个text文件是一个html格式,我的意思不是说他是html文件,是里面的内容是一个html格式的字符串,那么直接插入到dom结构里面,那么浏览器会去渲染这个字符串,大到我们想要的效果。

那么渲染之后的元素我们能用js去获取嘛?

答案是能!一定能。然后你可以对请求过来的元素进行各种操作,改样式,那些都是你的事了。

如果你的txt里面是一个类似json对象的字符串,那么你想要以json对象格式输出的话,直接赋值是不行的,这里需要用到eval函数。这个函数就是执行这个函数传过来的字符串,将传过来的值当做js去执行,那么我们就得到了一个json对象。

当然jq对于ajax已经封装的很好了,各种参数已经满足了我们开发的需求,但是从进阶角度还是要看看这些值是如何转变的,况且,原生,速度快 。

下面附上我测试的代码 。

<!doctype>
<html>
	<head>
		<title>ajax</title>
		<meta charset="utf-8">
		<script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
		<script>			
	function wzd(){
		console.log($('img').length);
	
	}	
		function ajax(){
			var xmlhttp;
			if(window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();}
			else{xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');}
			xmlhttp.onreadystatechange=function(){
			if(xmlhttp.readyState==4 && xmlhttp.status==200)
			{ 
			var  aa=xmlhttp.responseText;			
			document.getElementById('ja').innerHTML=document.getElementById('ja').innerHTML+aa;		
				$('img').each(function(){
				this.οnlοad=function(){
				$(this).animate({'opacity':1},1000);
				}
				})			
			}
			}
			xmlhttp.open("GET","ajax.txt",true);
			xmlhttp.send();			
		}	
//这个是将字符串转变成json对象的函数		
		function strToJson(str){   
		var json = eval('(' + str + ')');   
		return json;   
		}   
			</script>
	</head>
	<body>
		<input type="text" id='ajax' value='ajax' οnclick='ajax()'><br>
		<div id='ja' style='width:500px; height:500px; background-color:blue;'>22</div>
		<input type='button' value='aa' οnclick="wzd()">
		
	</body>
</html>


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值