function objToStr(obj){

  obj.t = new Date().getTime();  // 给obj动态增加了一个属性
// 这个给对象添加属性的方法, 会被直接加到键值对里?? /*
{
"userName":"lnj",
"userPwd":"123456",
"t":"38439034204" // 随机的时间数值
}
*/ var res = []; for(var key in obj){
res.push(encodeURIComponent(key)+"="+encodeURIComponent(obj[key]));
// 注意这里键值对取值的方式
// encodeURIComponent(); 把中文转码,因为URL里不能出现中文
// URL中只能出现 字母/数字/下划线/ASCII码
}
return res.join("&"); // 数组的join方法要看一下!!
} function ajax(url, obj, timeout, success, error){ // 0. 将对象转换为字符串
var str = objToStr(obj); // 函数的返回值即为这个字符串str // 1. 创建异步对象
var xmlHttp, timer; if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}else{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} /* 2. 设置请求方式和请求地址 open(method,url,async)
method: 请求的类型 GET 或 POST
url: 文件在服务器上的位置
async: true(异步) false(同步)
*/
xmlHttp.open("GET", url+"?"+str, true); // 3. 发送请求
xmlHttp.send(); // 4. 监听状态的变化
xmlHttp.onreadystatechange = function(ev2){
/*
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4:请求已完成,且相应已就绪
*/
if(xmlHttp.readyState === 4){
//判断是否请求成功
clearInterval(timer); // 这里有点疑问,readyState状态为4,即清除定时器? if(xmlHttp.status >= 200 && xmlHttp.status < 300 || xmlHttp.status === 304){
// 5. 处理返回的结果
success(xmlHttp);
}else{
error(xmlHttp);
}
}
}
// 判断外界是否传入了超时时间
if(timeout){
timer = setInterval(() => {
xmlHttp.abort(); // abort(); 中止XMLHttpRequest对象的请求
clearInterval(timer);
}, timeout);
}
}
  <script src="myAjax.js"></script>
<script>
window.onload = function(ev){
var oBtn = document.querySelector('button');
//var res = encodeURIComponent('张三'); oBtn.onclick = function(ev1){ ajax('04-ajax-get.php', {
"userName":"lnj",
"userPwd":"123456"
}, 3000, // 设置服务器响应超时时间,到时间还没返回结果,就中止这次请求
function(xhr){
alert(xhr.responseText); }, function(xhr){
alert('请求失败');
})
}
}
</script>
xhr.open("POST", "04-ajax-get.php", true);
// POST 的 URL后面 不能直接拼接参数, 只能通过以下方式: // 注意点:以下代码必须放到open和send之间
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.send("userName=zs&userPwd=123"); // POST请求的参数

AJAX - 封装AJAX GET 数组join( )方法 键值对取value POST请求参数注意点的更多相关文章

  1. php合并数组并保留键值的方法

    答案:使用 + 连接两个数组,替换array_merge()函数. php合并数组,一般会使用array_merge方法. array_merge — 合并一个或多个数组 array array_me ...

  2. 实现对多维数组按照某个键值排序的两种方法(array_multisort和array_sort)

    实现对多维数组按照某个键值排序的两种解决方法(array_multisort和array_sort): 第一种:array_multisort()函数对多个数组或多维数组进行排序.    //对数组$ ...

  3. js变量作为数组对象的键值方法

    js变量作为数组对象的键值方法,变量键值获取数组值 js也可以像php的数组一样用下标获取数组的值,方法是: var arr = {'key':'abc'}; var key = 'key'; con ...

  4. PHP编程实现多维数组按照某个键值排序的方法

    1.array_multisort()函数对多个数组或多维数组进行排序. //对数组$hotcat按照count键值大小降序进行排序: $hotcat =array(  array('1501'=&g ...

  5. PHP如何根据数组中的键值进行排序

    主要是使用PHP的排序函数,asort()和arsort(). 为了减少代码的耦合性,我们将根据数组中的键值进行排序封装成一个函数 <?php $array = array( array(), ...

  6. 通过程序修改注册表键值来达到修改IE配置参数的目的

    通过程序修改注册表键值来达到修改IE配置参数的目的 使用IE访问应用程序或网页时经常需要设置一些选项(工具-Internet 选项),比如为了避免缓存网页,把工具-Internet选项-常规选项卡-I ...

  7. php 二位数组按某个键值排序

    $arr=[ array( 'name'=>'小坏龙', 'age'=>28 ), array( 'name'=>'小坏龙2', 'age'=>14 ), array( 'na ...

  8. JAVA 数组作为方法返回值—返回地址

    package Code411;/*一个方法可以有0,1,多个 参数,但只能有0和1个返回值希望一个方法产生多个结果数据进行返回 数组作为方法的参数,传递进去的是数组的地址值. */public cl ...

  9. 二维数组按某个键值排序 FOR PHP

    $arr=[ array( 'name'=>'小坏龙', 'age'=>28 ), array( 'name'=>'小坏龙2', 'age'=>14 ), array( 'na ...

随机推荐

  1. Thumb指令集与ARM指令集的差别

    Thumb指令集          Thumb指令能够看做是ARM指令压缩形式的子集.是针对代码密度[1]的问题而提出的.它具有16为的代码密度.Thumb不是一个完整的体系结构,不能指望处理程序仅仅 ...

  2. Mesh BRep Shapes

    Mesh BRep Shapes eryar@163.com Abstract. 当对OpenCASCADE的BRep表示法的数据结构有了一定的理解后,建议可以自己实现一个显示数据生成的功能,即网格剖 ...

  3. Cocos2d-x学习笔记(十四)CCAutoreleasePool具体解释

    原创文章,转载请注明出处:http://blog.csdn.net/sfh366958228/article/details/38964637 前言 之前学了那么多的内容.差点儿全部的控件都要涉及内存 ...

  4. 2015合肥网络赛 HDU 5492 Find a path 动归

    HDU 5492 Find a path 题意:给你一个矩阵求一个路径使得 最小. 思路: 方法一:数据特别小,直接枚举权值和(n + m - 1) * aver,更新答案. 方法二:用f[i][j] ...

  5. 《Linux企业应用案例精解》一书已由清华大学出版社出版

    <Linux企业应用案例精解>简介 650) this.width=650;" border="0" alt="223754878.jpg" ...

  6. Linq中where查询

    Linq的Where操作包括3种形式:简单形式.关系条件形式.First()形式. 1.简单形式: 例:使用where查询在北京的客户 var q = from c in db.Customers   ...

  7. 用json2.js 代替 json.js防止与jQuery的js冲突

    用json2.js 代替 json.js防止与jQuery的js冲突 1 s.toJSONString json.js:259 2 Object.toJSONString json.js:158 3 ...

  8. datatable设置成中文

    $('#datatable').DataTable({ language: { "sProcessing": "处理中...", "sLengthMe ...

  9. 00076_BigDecimal

    1.在程序中执行下列代码,会出现什么问题? System.out.println(0.09 + 0.01); System.out.println(1.0 - 0.32); System.out.pr ...

  10. Top 22 Free Responsive HTML5 Admin & Dashboard Templates 2018

    Top 22 Free Responsive HTML5 Admin & Dashboard Templates 2018 May 18, 2018 Alex Ivanovs Website ...