jquery 源码分析5-ajax()ajax原理,可以加载的类型
2016-10-18 19:11
441 查看
jquery 源码分析5-ajax()ajax原理,可以加载的类型
很多框架都有自己的一套ajax,其实都是封装了浏览器器提供的对像XMLHttpRequest ,XMLHttpRequest从发起一个http请求到返回一个服务器传回的数据有以下一个步骤创建 XMLHttpRequest对象
// Create the request object; Microsoft failed to properly // window.ActiveXObject 是IE7 对应的发去ajax对象,其他浏览器是通过 new XMLHttpRequest(), var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
open一个连接,(如果服务端设置了username,需要用户名,密码,默认都是不需要的)
if( username ) xhr.open(type, s.url, s.async, s.username, s.password); else xhr.open(type, s.url, s.async);
设置请求头
xhr.setRequestHeader("Content-Type", s.contentType);
执行send()方法
xhr.send();
执行绑定在xhr上的方法onreadystatechange(),处理返回的数据,onreadystatechange是浏览器定义的XMLHttpRequest对象http请求完成后的回调函数
可以加载资源类型
xml: "application/xml, text/xml", html: "text/html", script: "text/javascript, application/javascript", json: "application/json, text/javascript", text: "text/plain",
dataType 有xml,html,script,json,text和JSONP(用于跨域使用,本质和script一样)
封装了ajax的方法
get: function( url, data, callback, type ) { return jQuery.ajax(); }, getScript: function( url, callback ) { return jQuery.get(url, null, callback, "script"); }, getJSON: function( url, data, callback ) { return jQuery.get(url, data, callback, "json"); }, post: function( url, data, callback, type ) { return jQuery.ajax({ type: "POST", url: url, data: data, success: callback, dataType: type }); }, ajax: function(s){ //这里进行了简化,实际是在这里做了很多判断, var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); xhr.open(type, s.url, s.async, s.username, s.password); xhr.setRequestHeader("Content-Type", s.contentType); xhr.send(); onreadystatechange(callBackData); }
默认就是上面这些方法,从上面看,我们主要关注ajax方法,ajax方法的参数是一个对象,这种用法在定义函数参数很有好,这样我们在函数内部可以根据键值对的模式拿到参数,如果用ajax(a,b,c,d),假设a,b,c,d中某个参数没有传入,在函数内部做判断也是很麻烦的,而通过一个我定义好了的对象属性名来判断就比较方便,都是可读性也比较强
相关文章推荐
- jQuery源码分析系列(36) : Ajax - 类型转化器
- jQuery源码分析系列(35) : Ajax - jsonp的实现与原理
- jQuery-1.9.1源码分析系列(十六)ajax——jsonp原理
- jQuery-1.9.1源码分析系列(十六)ajax——jsonp原理
- (九)Tomcat源码解析 - WebApp类加载机制原理分析
- jQuery deferred应用之ajax详细源码分析(二)
- jQuery deferred应用之ajax详细源码分析(二)
- jQuery源码分析系列(30) : Ajax 整体结构
- jQuery 2.0.3 源码分析Sizzle引擎 - 解析原理
- jQuery源码分析之$.ajax方法
- jQuery源码分析-15AJAX-前置过滤器和请求分发器
- jQuery源码分析之ajaxConverter与ajaxHandleResponse函数
- jQuery源码分析系列(37) : Ajax 总结
- 很多人想要的Jquery 加载Loading效果,可以加到自己的项目中,结合Ajax使用
- 【Spring】Spring的IOC(控制反转)/DI(依赖注入)原理(三):Spring启动加载配置文件源码分析
- jQuery-1.9.1源码分析系列(三) Sizzle选择器引擎——编译原理
- jquery插件--ajaxfileupload.js上传文件原理分析
- jQuery源码分析系列(33) : AJAX中的前置过滤器和请求分发器
- Javascript笔记:jQuery源码分析以及从jQuery对象创建的角度理解extend方法的原理
- jQuery实现DOM加载方法源码分析