JS的原生Ajax和jQuery中的Ajax
Ajax简介
Ajax(Asynchhronous Javascript And XML)是指一种创建网页应用的网页开发技术。Ajax通过后台与服务器进行少量的数据交换,可以使网页实现异步更新,创建快速动态网页,无需加载整个页面的情况下,能够更新部分网页技术。Ajax不是一种新的编程语言,它是一种独立于web服务器软件的浏览器技术。
在没有Ajax的时候,客户端提交数据后,会等待服务器返回结果,期间出现假死状态,直到服务器返回结果才会载入新的页面,呈现页面请求结果。而使用Ajax就不会出现假死状态,局部刷新数据而不影响整个页面的呈现和使用,同时客户端也没有等待服务器的返回结果的时间开销,展现出良好的交互性。
Ajax的核心是XMLHttpRequest对象,这是一个Javascript对象。下面是XMLHttpRequest对象的一些方法描述:
接下来我们来看看实现Ajax的两种方式(使用XMLHttpRequest对象做原生代码实现和基于Jquery实现)
使用XMLHttpRequest对象做原生代码实现:
<body> <script type="text/javascript"> //1实例化 xhr对象 var xhr = new XMLHttpRequest(); //2设置请求路径和方法 xhr.open("GET","http://localhost:63342/WebStorm/老陈中级/day05/apple.txt"); //3发送请求 xhr.send() //4监听事件 xhr.onreadystatechange = function(){ if(xhr.readyState==4&&xhr.status==200){ console.log(xhr.readyState) console.log(xhr.status) console.log(xhr) var h1 = document.createElement("h1") h1.innerHTML = xhr.responseText; document.body.appendChild(h1) } } // //封装 //1声明一个函数 function getAajx(httpUrl,fn){ //实力化对象 var xhr = new XMLHttpRequest(); //设置路径和方法 xhr.open("get",httpUrl); //发送请求 xhr.send(); //设置监听事件 xhr.onreadystatechange = function(){ if(xhr.readyState==4&&xhr.status==200){ fn(xhr); } } } //调用函数。 getAajx("http://localhost:63342/WebStorm/老陈中级/day05/apple.txt",function(xhr){ var h1 = document.createElement("h1"); h1.innerHTML = xhr.responseText; h1.style.color = "red"; document.body.appendChild(h1); }) </script>
基于jquery:
jQuery是一个快速、简洁的JavaScript框架,它是一个优秀的JavaScript代码库。利用它实现Ajax相对与原生代码实现好使多了。
<html> <head> <meta charset="utf-8" /> <title></title> </head> <body> <script src="js/jquery-1.11.0.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> $.get('dati.json',function(res){ console.log(res) }) $.ajax({ url:'dati.json', method:"GET", success:function(res){ console.log(res) } }) var httpUrl = "https://free-api.heweather.net/s6/weather/now?location=beijing&key=c8b18212397748599a7fb0bfa1022b56" var hUrl = "https://free-api.heweather.net/s6/weather/now"; var loc = "beijing"; var weatherKey = "c8b18212397748599a7fb0bfa1022b56" var data = { location:loc, key:weatherKey } // $.get(httpUrl,function(res){ // console.log(res) // }) // $.get(hUrl,data,function(res){ // console.log(res) // }) $.ajax({ url:hUrl, method:"GET", data:data, success:function(res){ console.log(res) } }) // function getAjax(httpUrl,fn){ // //1实例化xhr对象 // var xhr = new XMLHttpRequest() // //2设置请求的路径和方法 // xhr.open("GET",httpUrl); // //3发送请求 // xhr.send() // //4监听事件,接收请求 // xhr.onreadystatechange = function(){ // if(xhr.readyState==4&&xhr.status==200){ // /*console.log(xhr.readyState); // console.log(xhr.status) // console.log(xhr)*/ // // fn(xhr) // // } // } // } // // getAjax("dati.json",function(res){ // console.log(res) // res = JSON.parse(res.responseText) // console.log(res) // }) </script> </body> </html>

浙公网安备 33010602011771号