封装库--JavaScript,ajax说明

封装库ajax()方法,ajax通讯方法,跨页面向动态页面发送或获取数据

/** ajax()方法,ajax通讯方法,跨页面向动态页面发送或获取数据
* 参数是一个对象{},如下
* $().ajax({
method:'post', 【method】属性,通讯模式,post为post模式,get为get模式
url:'hj.php', 【url】属性,发送数据或请求数据的url地址
data:{ 【data】属性,是发送内容,是一个对象,里面是键值对形式的发送数据对象
'name':'lee',
'age':100
},
success:function (text) { 【success】属性,是一个回调函数,函数参数是text,会接收到发送或者获取到的数据
alert(text);
},
async:true 【async】属性,请求方式,true异步方式,false同步方式
});
**/
feng_zhuang_ku.prototype.ajax = function (obj) {
//创建XHR对象
var xhr = (function () {
if (typeof XMLHttpRequest != 'undefined') { //判断是否可以直接创建XHR对象,w3c
return new XMLHttpRequest(); //如果可以就直接创建XHR对象
} else if (typeof ActiveXObject != 'undefined') { //判断IE低版本的3种模式是否支持
var version = [
'MSXML2.XMLHttp.6.0',
'MSXML2.XMLHttp.3.0',
'MSXML2.XMLHttp'
];
for (var i = 0; version.length; i++) {
try {
return new ActiveXObject(version[i]);
} catch (e) {
//跳过
}
}
} else {
throw new Error('您的系统或浏览器不支持XHR对象!'); //如果都不支持报错
}
})(); //自我执行闭包里的函数,创建XHR对象 //接收对象url地址
obj.url = obj.url + '?rand=' + Math.random(); //组合对象传进来的通讯url地址 //接收对象传来的内容,进行名值对编码
obj.data = (function (data) {
var arr = [];
for (var i in data) {
arr.push(encodeURIComponent(i) + '=' + encodeURIComponent(data[i]));
}
return arr.join('&'); //将数组格式化分隔符后返回
})(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);
}
}
return this;
};

前台js

//调用ajax
$(document).on_click(function () {
$().ajax({
method:'post',
url:'hj.php',
data:{
'name':'lee',
'age':100
},
success:function (text) {
alert(text);
},
async:true
});
});

通讯数据url地址hj.php

<?php
echo 'www.jxiou.com';
print_r($_POST);
?>

最终回调显示

最新文章

  1. Android屏幕适配笔记
  2. IIS 常见问题集记录
  3. host 备份
  4. SAE上传文件到storage
  5. 挂多个class还是新建class —— 多用组合,少用继承
  6. 【原创】Android开发之ADB及ADB SHELl命令的应用
  7. Activity---Fragment---listView的实现
  8. Sicily-1050 深度优先搜索
  9. 与众不同 windows phone (29) - Communication(通信)之与 OData 服务通信
  10. [leetcode-532-K-diff Pairs in an Array]
  11. 基于 Java NIO 实现简单的 HTTP 服务器
  12. x264源代码简单分析:x264_slice_write()
  13. deno深入揭秘及未来展望
  14. openstry lua redis实现负载均衡
  15. ArcGIS10.6的新功能
  16. Nginx的Access日志记录的时机
  17. Excel导入CSV文件中文乱码
  18. [转]分布式系统唯一ID生成方案汇总
  19. cpld fpga 区别
  20. android Service 学习总结

热门文章

  1. OpenCV和Matlab
  2. Android Tint着色与帧动画结合
  3. Loadrunner关于页面检查的几个函数详解
  4. MVC总结--数据传递
  5. python&amp;amp;php数据抓取、爬虫分析与中介,有网址案例
  6. Tomcat源代码解析系列
  7. struts2中标签
  8. Grunt快速使用笔记
  9. 采集Snoopy.class.php
  10. 【转载】C#根据当前时间获取周,月,季度,年度等时间段的起止时间