Ajax的封装03
一、Ajax
var xhr=new XMLHttpRequest();
// 请求行 请求方式 请求地址 xhr.open(请求方式,请求地址)
xhr.open("post",'01.php');
// console.log(xhr);
// 请求头 在post提交方式下必须写,get则不写
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
// 请求正文
xhr.send('name=itcast&age=10');
// 监听状态变化
xhr.onreadystatechange=function(){
//如果接受到4,就代表完成了
if(xhr.readyState==4){
// console.log(xhr.responseText);
document.querySelector('p').innerText=xhr.responseText;
二、Ajax的其他的API
xhr.setRequestHeader() 设置请求头
xhr.send() 发送请求主体get方式使用xhr.send(null)
xhr.onreadystatechange = function () {} 监听响应状态
xhr.readyState = 0时,UNSENT open尚未调用
xhr.readyState = 1时,OPENED open已调用
xhr.readyState = 2时,HEADERS_RECEIVED 接收到头信息
xhr.readyState = 3时,LOADING 接收到响应主体
xhr.readyState = 4时,DONE 响应完成 失败否不知道
不用记忆状态,只需要了解有状态变化这个概念
xhr.status表示响应码,如200表示响应成功(只读)
xhr.statusText表示响应信息,如OK
xhr.getAllResponseHeaders() 获取全部响应头信息
xhr.getResponseHeader('key') 获取指定头信息
xhr.responseText、xhr.responseXML都表示响应主体
三、XML标记语言
1.语法规则:
2、不可有空格、不可以数字或.开头、大小写敏感
3、不可交叉嵌套
4、属性双引号(浏览器自动修正成双引号了)
5、特殊符号要使用实体
6、注释和HTML一样
虽然可以描述和传输复杂数据,但是其解析过于复杂并且体积较大,所以实现开发已经很少使用了。
2.使用Ajax请求XML数据

四、JSON
即 JavaScript Object Notation,另一种轻量级的文本数据交换格式,独立于语言。
1.语法规则
1、数据在名称/值对中
2、数据由逗号分隔(最后一个健/值对不能带逗号)
3、花括号保存对象方括号保存数组
4、使用双引号
2.JSON解析
JSON数据在不同语言进行传输时,类型为字符串,不同的语言各自也都对应有解析方法,需要解析完成后才能读取
1、Javascript 解析方法
eavl()在其中执行js代码
JSON对象转换:1.JSON.parse(); 这里是把json转换成obj
2.JSON.stringify();这里是把obj转换成json
JSON兼容处理json2.js
2、PHP解析方法
json_encode();把关联数组转换成JSON
json_decode();把关联数组转换成对象
总结:JSON体积小、解析方便且高效,在实际开发成为首选。
js对象和php对象的区别:
js对象 var obj={key:value};
php对象 是传统的对象
1.声明类
2.实例化对象
3.赋值
class person{
public $name,
public $age;
}
$Person=new person();
echo $Person->name="tom";
3.兼容性
IE5、IE6中使用 ActiveObject("Microsoft.XMLHTTP")
如下图
关于IE的兼容方面,了解即可。
1.3 封装AJAX工具函数
为了提升我们的开发效率,我们自已将XMLHttpRequest封装成一个函数。
JS代码:
var $={
params:function(arg){
// key=value&key=value
var o='';
for(var k in arg){
o+=k+'='+arg[k]+'&';
// key=value&key=value&
}
// slice(起始点,切除点)
o=o.slice(0,-1);
// key=value&key=value
return o;
},
ajax:function(options){
var type=options.type||'get';
var url=options.url||'';
// key=value&key=value 传入对象
// 把对象编程符合key=value&key=value的形式
var data=this.params(options.data||{});
var success=options.success;
var xhr=newXMLHttpRequest;
// 请求行
if(type=='get'){
// www.study.com?name=itcast&age=10
url=url+'?'+data;
data=null;
}
xhr.open(type,url);
// 请求头
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
// 请求正文
xhr.send(data);
// 监听并处理响应
xhr.onreadystatechange=function(){
if(xhr.readyState==4&&xhr.status==200){
var result=xhr.responseText;
success(result);
}
}
}
}
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>Document</title>
</head>
<body>
<scriptsrc="tools-2.js"></script>
<script>
var user={
name:'杰克',
age:18
}
$.ajax({
type:'post',
url:'tools.php',
data:user,
success:function(result){
console.log(result);
}
})
// $.ajax({
// type:'get',
// url:'tools.php',
// data:null;
// success:function(){
// }
// })
</script>
</body>
</html>
<?php
echo "hello world"
?>
1.4 jQuery中的Ajax
jQuery为我们提供了更强大的Ajax封装
$.ajax({}) 可配置方式发起Ajax请求
$.get() 以GET方式发起Ajax请求
$.post() 以POST方式发起Ajax请求
$('form').serialize() 序列化表单(即格式化key=val&key=val)
url 接口地址
type 请求方式
timeout 请求超时
dataType 服务器返回格式
data 发送请求数据
beforeSend: function () {} 请求发起前调用
success 成功响应后调用
error 错误响应时调用
complete 响应完成时调用(包括成功和失败)
读取json文件的数据:
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>Document</title>
<style>
table {
width:800px;
border-collapse: collapse;
}
td {
height:40px;
text-align: center;
border:1px solid #CCC;
}
</style>
</head>
<body>
<table>
<!--<tr>
<td>王力宏</td>
<td>39</td>
<td>男</td>
</tr>-->
</table>
<scriptsrc="js/jquery.min.js"></script>
<script>
$.ajax({
type:'post',
url:'stars.php',
data:null,
success:function(data){
var obj=JSON.parse(data);
console.log(obj);
var html='';
for(var k in obj){
// console.log(obj[k]);
// 拼接字符串
html+='<tr>'+
'<td>'+obj[k].name+'</td>'+
'<td>'+obj[k].photo+'</td>'+
'<td>'+obj[k].ablum+'</td>'+
'<td>'+obj[k].age+'</td>'+
'<td>'+obj[k].sex+'</td>'+
'</tr>';
}
document.querySelector('table').innerHTML+=html;
}
})
</script>
</body>
</html>
[
{
"name":"王力宏",
"photo":"./images/wlh.jpg",
"ablum":"<<改变自已>>",
"age":39,
"sex":"男"
},
{
"name":"王力宏",
"photo":"./images/wlh.jpg",
"ablum":"<<改变自已>>",
"age":39,
"sex":"男"
},
{
"name":"王力宏",
"photo":"./images/wlh.jpg",
"ablum":"<<改变自已>>",
"age":39,
"sex":"男"
},
{
"name":"王力宏",
"photo":"./images/wlh.jpg",
"ablum":"<<改变自已>>",
"age":39,
"sex":"男"
}
]
<?php
$json=file_get_contents('stars.json');
echo $json;
?>
Ajax的封装03的更多相关文章
- 原生态AJAX详解和jquery对AJAX的封装
AJAX: A :Asynchronous [eI`sinkrenes] 异步 J :JavaScript JavaScript脚本语言 A: And X :XML 可扩展标记语言 AJAX现在 ...
- 【前端学习笔记04】JavaScript数据通信Ajax方法封装
//Ajax 方法封装 //设置数据格式 function setData(data){ if(!data){ return ''; } else{ var arr = []; for(k in da ...
- 原生ajax与封装的ajax使用方法
当我们不会写后端接口来测试ajax时,我们可以使用node环境创建一个本地服务器. 1.创建一个本地服务器可参考http://www.cnblogs.com/heyujun-/p/6793900.ht ...
- Ajax入门(二)Ajax函数封装
如果看了的我上一篇博客<Ajax入门(一)从0开始到一次成功的GET请求>的话,肯定知道我们已经完成了一个简单的get请求函数了.如下: 1234567891011121314151617 ...
- js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用)
js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用) 一.总结 2.匿名函数作为参数传递 二.js进阶ajax函数封装 ajax1.js function ajax(ur ...
- jQuery-实现简单的Ajax请求封装
封装的意义在于复用,在于减少重复的代码. 我在项目中做了简单的Ajax请求封装,实现方式如下: //封装Ajax请求 $.extend({ ajaxDirect:function(url,type,d ...
- JQ中的Ajax的封装
1.认识JQ中ajax的封装 jQ 对于ajax的封装有两层实现:$.ajax 为底层封装实现:基于 $.ajax ,分别实现了$.get 与$.post 的高层封装实现: 2.Ajax的底 ...
- Ajax的封装。
封装 Ajax 因为Ajax 使用起来比较麻烦,主要就是参数问题,比如到底使用GET 还是POST:到 底是使用同步还是异步等等,我们需要封装一个Ajax 函数,来方便我们调用. 封装支持接收来 ...
- Jquery Ajax简单封装(集中错误、请求loading处理)
Jquery Ajax简单封装(集中错误.请求loading处理) 对Jquery Ajax做了简单封装,错误处理,请求loading等,运用到项目中集中处理会很方便. 技术层面没有什么好说的,请求是 ...
随机推荐
- [Android] ADB操作相关经验
1.手机必须先root,小米可以安卓开发版系统即可.(注意:usb设置为调试模式) 2.安卓 adb工具(android debug bridge) 3.依次执行下面的命令: #adb root 获得 ...
- System.Data.OleDb.OleDbException: 未指定的错误的解决方法
异常详细信息: System.Data.OleDb.OleDbException: 未指定的错误 这个错误是access数据库特有的错误,当access频繁读取或操作过多的时候就会发生这个错误,微软官 ...
- js点击后将文字复制到剪贴板,将图片复制到剪贴板
复制文字: <table width="99%" border="0" cellpadding="0" cellspacing=&qu ...
- js 控制 css3高级运动 keyframes
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 使用Group By注意事项
当查询中存在group by子句时,select列表(或是having子句)中只能存在分组函数,或是出现在group by子句中的字段. 这里说的,"出现在group by子句中的字段&qu ...
- Android EditText输入格式设置
在开发的过程中,通常会用到EditText,如何让虚拟键盘来适应输入框中内容的类型,通常我们都会在xml文件中加入android:inputType="". android:inp ...
- SQL Server 2014 SP2发布下载:数十项更新修复
微软发布了数据库工具SQL Server 2014 SP2服务包下载,本次更新集合了数十项更新修复,涉及安全和功能性补丁,使用SQL Server 2014的用户应该及时安装该服务包. 文件内容 版本 ...
- 在Linux上编写C#程序
自从C#开源之后,在Linux编写C#程序就成了可能.Mono-project就是开源版本的C#维护项目.在Linux平台上使用的C#开发工具为monodevelop.安装方式如下: 首先需要安装一些 ...
- 【原】redis插件安装
wget -c https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz -O phpredis-2.2.4.tar.gz tar xzf ...
- Struts2中使用OGNL
链接:Struts标签库 OGNL(Object Graphic Navigatino Language) OGNL称为对象图导航语言.以一个对象为根(起点),通过OGNL可以访问与这个对象关联的其它 ...