AJax技术

详解Ajax技术(3)

字号+ 作者:H5之家 来源:H5之家 2017-10-12 17:10 我要评论( )

使用过jQuery异步请求的方法的同学,肯定觉得那个相当好用,相比而言,上面写的相当繁琐,get方式和post方式请求甚至还有部分代码是有很大区别的,那应如何通过代码的方式屏蔽这些区别呢,这里我们仿一下jQuery 的$

        使用过jQuery异步请求的方法的同学,肯定觉得那个相当好用,相比而言,上面写的相当繁琐,get方式和post方式请求甚至还有部分代码是有很大区别的,那应如何通过代码的方式屏蔽这些区别呢,这里我们仿一下jQuery 的$.ajax() 方法。

//封装ajax function ajax(obj) { var xhr = creatXmlHttpRequest(); obj.url = obj.url + '?rand=' + Math.random(); obj.data = params(obj.data); if (obj.method === 'get') obj.url += obj.url.indexOf('?') == -1 ? '?' + obj.data : '&' + obj.data; if (obj.async === true) { xhr.onreadystatechange = function () { if (xhr.readyState == 4) { callback(); } }; } xhr.open(obj.method, obj.url, obj.async); if (obj.method === 'post') { xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send(obj.data); } else { xhr.send(null); } if (obj.async === false) { callback(); } function callback() { if (xhr.status == 200) { obj.success(xhr.responseText); //回调传递参数 } else { alert('获取数据错误!错误代号:' + xhr.status + ',错误信息:' + xhr.statusText); } } }
//名值对转换为字符串 function params(data) { var arr = []; for (var i in data) { arr.push(encodeURIComponent(i) + '=' + encodeURIComponent(data[i])); } return arr.join('&'); }
调用我们封装的ajax方法

window.onload = function(){ document.getElementById("username").onchange = function(){ ajax({ method : 'post', url : 'checkuserByJSON.jsp', data : { 'username' : document.rgform.username.value, 'password' : document.rgform.password.value }, success : function (text) { var _ret = eval('(' + text + ')'); document.getElementById("msg").innerHTML = _ret.tip; }, async : true }); } }
我们给ajax传的就是一个object对象,是不是已经很贴近jQuery的方式了呢。

来源:马开东云搜索(电话:15110131480 微信:makaidongzi QQ:1130122167 微信公众号:makaidong-com)
       欢迎分享本文,转载请保留出处!

       【原文】

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  •  Ajax技术分门别类与实现

    Ajax技术分门别类与实现

    2017-10-13 10:02

  • Jquery ajax调用webservice总结

    Jquery ajax调用webservice总结

    2017-10-12 12:39

  • 学员笔记 千锋教育论坛

    学员笔记 千锋教育论坛

    2017-10-12 09:18

  • Xluo 大型Ajax聊天室(ASP.NET+jQuery)

    Xluo 大型Ajax聊天室(ASP.NET+jQuery)

    2017-10-11 15:14

网友点评
e