32 ajax

32 ajax

AJAX

概念

ajax用来创建快速动态交互式页面的技术;

通过与后台少量的数据交换, 更新页面

在页面不刷新的基础上 更新页面上的某些数据

ajax: Asynchronous javascript and xml

异步 js 和 xml

执行方式

同步: 在数据请求过程中, 必须等待数据返回之后, 才能执行后续的代码

异步: 在数据请求过程中, 不需要等待数据返回, 就能执行后续的代码

常用异步

readyState

readyState:

0: 创建了ajax对象

1: 建立了链接

2: 发送了请求

3: 后台接收到请求 并且开始处理

4: 请求处理完成 返回了响应包

status

网络状态码: status

1XX: 信息

2XX: 请求成功 200

3XX: 重定向 304

4XX: 页面有报错 400 401 403 404 405

5XX: 服务器有报错 500 503 504

6XX: 归在5中

Conten-type:

表单:application/x-www-form-urlencoded 默认

文本: text/plain

文件: multipart/form-data

get

// 1. 创建ajax对象
var ajax = new XMLHttpRequest();
// console.log(ajax);

// 2. 建立连接
// open(请求方式, 请求地址, 是否异步);
// 请求地址: 相对地址---相对于引入了js的html文件的地址
// 请求方式: get post
// 是否异步: 同步: false 异步: true(默认)
// 传参: 传输给服务器的参数: 地址?key=value&key=value
ajax.open('get', './a.txt?a=1&b=2', true);
// console.log(ajax);

// 3. 发送请求
ajax.send();

// 4. 监听事件  
ajax.onreadystatechange = function(){
   if(ajax.readyState == 4 && ajax.status == 200){
       // 5. 获取数据
       console.log(ajax.response);
  }
}

post

// 创建ajax对象
var ajax = new XMLHttpRequest();

// 建立连接
ajax.open('post', 'a.txt', true);

// 设置请求头
ajax.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;charset=utf-8');

// 发送请求
ajax.send('a=1&b=2');


// 监听事件
ajax.onreadystatechange = function(){
   if(ajax.readyState == 4 && ajax.status == 200){
       console.log(ajax.response);
  }
}

封装

function ajax(type, url, data, fn) {
   // type: 请求方式 get post
   // url: 请求地址
   // fn: ajax请求成功后的执行的函数
   var ajax = new XMLHttpRequest();

   if (type == 'post') {
       // post
       // 建立连接
       ajax.open(type, url, true);
       // 设置请求头
       ajax.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;charset=utf-8');
       // 发送请求
       ajax.send(data);
  } else {
       // get
       ajax.open(type, url + '?' + data, true);
       // 3. 发送请求
       ajax.send();
  }

   // 监听事件
   ajax.onreadystatechange = function () {
       if (ajax.readyState == 4 && ajax.status == 200) {
           fn(ajax.response); // 传实参
      }
  }
}

区别

post: 请求参数在请求头中,安全级别高, 用于提交数据

get: 请求参数拼接在地址后面的,安全级别低, 容易被窃取, 用于请求数据

操作数据

eval

将字符串转成js数据: eval(字符串)

将eval中的字符串转成js代码并且执行

ajax('get', './arr.txt', '', function(res){
   console.log(res); // ajax请求到的数据都是string
   console.log(typeof res); // string

   // 将字符串转成js数据: eval(字符串)  
   // 将eval中的字符串转成js代码并且执行
   console.log('3+5');
   console.log(eval('3+5'));

   console.log(eval(res));
   var r = eval(res);
   console.log(r);
});

ajax('get', 'test.txt', '', function(res){
   console.log(res);
   console.log(typeof res);

   // console.log(eval(res));
   console.log(eval( '(' + res + ')' ));
});

parse

JSON.parse(数据)

console.log(JSON.parse(res));

json数据

  1. 文件后缀: .json

  2. 只有数字、字母

  3. 没有变量和函数

  4. 所有的引号必须是双引号 不能多余符号

一般最大层级: {} []

 

 

posted @ 2021-05-07 22:01  一花一世界111  阅读(43)  评论(0)    收藏  举报