一、Ajax

  1.原理:基于http协议的
    内置对象:XMLHttpRequest 发起请求 那会相应
    步骤:
  1. var xhr=new XMLHttpRequest();
  2. // 请求行 请求方式 请求地址 xhr.open(请求方式,请求地址)
  3. xhr.open("post",'01.php');
  4. // console.log(xhr);
  5. // 请求头 在post提交方式下必须写,get则不写
  6. xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
  7. // 请求正文
  8. xhr.send('name=itcast&age=10');
  9. // 监听状态变化
  10. xhr.onreadystatechange=function(){
  11. //如果接受到4,就代表完成了
  12. if(xhr.readyState==4){
  13. // console.log(xhr.responseText);
  14. document.querySelector('p').innerText=xhr.responseText;

二、Ajax的其他的API

       xhr.open() 发起请求,可以是get、post方式

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数据

         1.通过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体积小、解析方便且高效,在实际开发成为首选。

  1. js对象和php对象的区别:
  2. js对象 var obj={key:value};
  3. php对象 是传统的对象
  4. 1.声明类
  5. 2.实例化对象
  6. 3.赋值
  7. class person{
  8. public $name,
  9. public $age;
  10. }
  11. $Person=new person();
  12. echo $Person->name="tom";
 

3.兼容性

IE5、IE6中使用 ActiveObject("Microsoft.XMLHTTP")

如下图

关于IE的兼容方面,了解即可。

1.3 封装AJAX工具函数

为了提升我们的开发效率,我们自已将XMLHttpRequest封装成一个函数。

JS代码:

  1. var $={
  2. params:function(arg){
  3. // key=value&key=value
  4. var o='';
  5. for(var k in arg){
  6. o+=k+'='+arg[k]+'&';
  7. // key=value&key=value&
  8. }
  9. // slice(起始点,切除点)
  10. o=o.slice(0,-1);
  11. // key=value&key=value
  12. return o;
  13. },
  14. ajax:function(options){
  15. var type=options.type||'get';
  16. var url=options.url||'';
  17. // key=value&key=value 传入对象
  18. // 把对象编程符合key=value&key=value的形式
  19. var data=this.params(options.data||{});
  20. var success=options.success;
  21. var xhr=newXMLHttpRequest;
  22. // 请求行
  23. if(type=='get'){
  24. // www.study.com?name=itcast&age=10
  25. url=url+'?'+data;
  26. data=null;
  27. }
  28. xhr.open(type,url);
  29. // 请求头
  30. xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  31. // 请求正文
  32. xhr.send(data);
  33. // 监听并处理响应
  34. xhr.onreadystatechange=function(){
  35. if(xhr.readyState==4&&xhr.status==200){
  36. var result=xhr.responseText;
  37. success(result);
  38. }
  39. }
  40. }
  41. }
HTML代码
  1. <!DOCTYPE html>
  2. <htmllang="en">
  3. <head>
  4. <metacharset="UTF-8">
  5. <title>Document</title>
  6. </head>
  7. <body>
  8. <scriptsrc="tools-2.js"></script>
  9. <script>
  10. var user={
  11. name:'杰克',
  12. age:18
  13. }
  14. $.ajax({
  15. type:'post',
  16. url:'tools.php',
  17. data:user,
  18. success:function(result){
  19. console.log(result);
  20. }
  21. })
  22. // $.ajax({
  23. // type:'get',
  24. // url:'tools.php',
  25. // data:null;
  26. // success:function(){
  27. // }
  28. // })
  29. </script>
  30. </body>
  31. </html>
PHP代码
  1. <?php
  2. echo "hello world"
  3. ?>
 

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文件的数据:

 代码举例:
  HTML代码:
  1. <!DOCTYPE html>
  2. <htmllang="en">
  3. <head>
  4. <metacharset="UTF-8">
  5. <title>Document</title>
  6. <style>
  7. table {
  8. width:800px;
  9. border-collapse: collapse;
  10. }
  11. td {
  12. height:40px;
  13. text-align: center;
  14. border:1px solid #CCC;
  15. }
  16. </style>
  17. </head>
  18. <body>
  19. <table>
  20. <!--<tr>
  21. <td>王力宏</td>
  22. <td>39</td>
  23. <td>男</td>
  24. </tr>-->
  25. </table>
  26. <scriptsrc="js/jquery.min.js"></script>
  27. <script>
  28. $.ajax({
  29. type:'post',
  30. url:'stars.php',
  31. data:null,
  32. success:function(data){
  33. var obj=JSON.parse(data);
  34. console.log(obj);
  35. var html='';
  36. for(var k in obj){
  37. // console.log(obj[k]);
  38. // 拼接字符串
  39. html+='<tr>'+
  40. '<td>'+obj[k].name+'</td>'+
  41. '<td>'+obj[k].photo+'</td>'+
  42. '<td>'+obj[k].ablum+'</td>'+
  43. '<td>'+obj[k].age+'</td>'+
  44. '<td>'+obj[k].sex+'</td>'+
  45. '</tr>';
  46. }
  47. document.querySelector('table').innerHTML+=html;
  48. }
  49. })
  50. </script>
  51. </body>
  52. </html>
JSON代码
  
  1. [
  2. {
  3. "name":"王力宏",
  4. "photo":"./images/wlh.jpg",
  5. "ablum":"<<改变自已>>",
  6. "age":39,
  7. "sex":"男"
  8. },
  9. {
  10. "name":"王力宏",
  11. "photo":"./images/wlh.jpg",
  12. "ablum":"<<改变自已>>",
  13. "age":39,
  14. "sex":"男"
  15. },
  16. {
  17. "name":"王力宏",
  18. "photo":"./images/wlh.jpg",
  19. "ablum":"<<改变自已>>",
  20. "age":39,
  21. "sex":"男"
  22. },
  23. {
  24. "name":"王力宏",
  25. "photo":"./images/wlh.jpg",
  26. "ablum":"<<改变自已>>",
  27. "age":39,
  28. "sex":"男"
  29. }
  30. ]
PHP代码
  1. <?php
  2. $json=file_get_contents('stars.json');
  3. echo $json;
  4. ?>
 
           
 

Ajax的封装03的更多相关文章

  1. 原生态AJAX详解和jquery对AJAX的封装

    AJAX: A :Asynchronous [eI`sinkrenes] 异步 J :JavaScript    JavaScript脚本语言 A: And X :XML 可扩展标记语言 AJAX现在 ...

  2. 【前端学习笔记04】JavaScript数据通信Ajax方法封装

    //Ajax 方法封装 //设置数据格式 function setData(data){ if(!data){ return ''; } else{ var arr = []; for(k in da ...

  3. 原生ajax与封装的ajax使用方法

    当我们不会写后端接口来测试ajax时,我们可以使用node环境创建一个本地服务器. 1.创建一个本地服务器可参考http://www.cnblogs.com/heyujun-/p/6793900.ht ...

  4. Ajax入门(二)Ajax函数封装

    如果看了的我上一篇博客<Ajax入门(一)从0开始到一次成功的GET请求>的话,肯定知道我们已经完成了一个简单的get请求函数了.如下: 1234567891011121314151617 ...

  5. js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用)

    js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用) 一.总结 2.匿名函数作为参数传递 二.js进阶ajax函数封装 ajax1.js function ajax(ur ...

  6. jQuery-实现简单的Ajax请求封装

    封装的意义在于复用,在于减少重复的代码. 我在项目中做了简单的Ajax请求封装,实现方式如下: //封装Ajax请求 $.extend({ ajaxDirect:function(url,type,d ...

  7. JQ中的Ajax的封装

    1.认识JQ中ajax的封装      jQ 对于ajax的封装有两层实现:$.ajax 为底层封装实现:基于 $.ajax ,分别实现了$.get 与$.post 的高层封装实现: 2.Ajax的底 ...

  8. Ajax的封装。

    封装 Ajax 因为Ajax 使用起来比较麻烦,主要就是参数问题,比如到底使用GET 还是POST:到 底是使用同步还是异步等等,我们需要封装一个Ajax 函数,来方便我们调用.    封装支持接收来 ...

  9. Jquery Ajax简单封装(集中错误、请求loading处理)

    Jquery Ajax简单封装(集中错误.请求loading处理) 对Jquery Ajax做了简单封装,错误处理,请求loading等,运用到项目中集中处理会很方便. 技术层面没有什么好说的,请求是 ...

随机推荐

  1. [Android] ADB操作相关经验

    1.手机必须先root,小米可以安卓开发版系统即可.(注意:usb设置为调试模式) 2.安卓 adb工具(android debug bridge) 3.依次执行下面的命令: #adb root 获得 ...

  2. System.Data.OleDb.OleDbException: 未指定的错误的解决方法

    异常详细信息: System.Data.OleDb.OleDbException: 未指定的错误 这个错误是access数据库特有的错误,当access频繁读取或操作过多的时候就会发生这个错误,微软官 ...

  3. js点击后将文字复制到剪贴板,将图片复制到剪贴板

    复制文字: <table width="99%" border="0" cellpadding="0" cellspacing=&qu ...

  4. js 控制 css3高级运动 keyframes

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 使用Group By注意事项

    当查询中存在group by子句时,select列表(或是having子句)中只能存在分组函数,或是出现在group by子句中的字段. 这里说的,"出现在group by子句中的字段&qu ...

  6. Android EditText输入格式设置

    在开发的过程中,通常会用到EditText,如何让虚拟键盘来适应输入框中内容的类型,通常我们都会在xml文件中加入android:inputType="". android:inp ...

  7. SQL Server 2014 SP2发布下载:数十项更新修复

    微软发布了数据库工具SQL Server 2014 SP2服务包下载,本次更新集合了数十项更新修复,涉及安全和功能性补丁,使用SQL Server 2014的用户应该及时安装该服务包. 文件内容 版本 ...

  8. 在Linux上编写C#程序

    自从C#开源之后,在Linux编写C#程序就成了可能.Mono-project就是开源版本的C#维护项目.在Linux平台上使用的C#开发工具为monodevelop.安装方式如下: 首先需要安装一些 ...

  9. 【原】redis插件安装

    wget -c https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz -O phpredis-2.2.4.tar.gz tar xzf ...

  10. Struts2中使用OGNL

    链接:Struts标签库 OGNL(Object Graphic Navigatino Language) OGNL称为对象图导航语言.以一个对象为根(起点),通过OGNL可以访问与这个对象关联的其它 ...