Ajax学习笔记

get post
  post相对于get安全,但在network的最下方heders/formData仍能看到
  form
    action methord enctype(字符格式,比如传文件)

现在用 ajax jsonp等其他的方式
  很多情况已经不用form做跨域传递了
  同步与异步(计算机语言 和 生活语言 相反)
  1. 创建Ajax对象
    主流浏览器:var ajax1 = new XMLHttpRequest()
    兼容IE:var ajax2 = new ActiveXObject('Microsoft.XMLHTTP')
  2. 初始化Ajax对象
    .open(methord,url,flag(同步或异步)) 异步true 同步false methord:put是什么需了解
  3. 发送请求
    .send(data); //post时候需要data塞进send,get时还是拼入url
  4. 每次状态变化都会触发(而我们需要确定是从哪个状态位变到哪个状态位)
    onreadystatechange() 状态改变触发器
    readyState() 对象状态(integer)
      0未初始化
      1读取中
      2已读取
      3交互中
      4完成
  5. if(readyState == 4) status == 200 处理
    404文件未找到 500服务器内部错误 304资源被修改
    1xx 信息 接到请求继续处理
    2xx 成功 成功收到 理解 接受
    3xx 重定向 为了完成任务要做另一措施(如直接从浏览器获取资源,跳转其他页面等)
    4xx 客户端错误 请求语法错误,不能完全符合要求
    5xx 服务器错误 服务器无法完成明显有效的请求

<script ...>
    var app = null;
    if(window.XMLHttpRequest){
        app = new XMLHttpRequest();
    }else{
        app = new ActiveXObject('Microsoft.XMLHTTP');
    }
    app.open('GET','./getMyData.php',true);
    //post限定
    setRequestHeader("Content-type","application/x-www-form-urlencoded")
    //post中的内容是什么类型
    app.send();
    app.onreadystatechange = fuction(){
        if(app.readyState == 4){
            //doSth
            if(app.status == 200){
                app.responseText //有时候直接返回的字符串
                JSON.parse(app.responseText); //
                ..sth..
            }
        }
    }
</script>    

 

  为了防止网页用缓存糊弄人/对抗懒加载机制,可以刻意在请求后面拼接时间戳
  只有get才会有缓存问题
  post在send和open 之间还需要 setRequestHeader("label","value") 把指定头部设置为所提供的值,在设置任何        首部之前必须先调用open吃石化ajax对象

data = JSON.parse(app.responseText);
data.forEach(
    function(data[i][prop1],data[i][prop2]){
      do sth with prop1,prop2
    }
)

  封装:全部参数封入一个函数的参数列表,根据各处操作 区分IE/主流 做不同请求类型的操作
JQueryAjax
  $.ajax
  格式:

$ajax{{
    type:'get',
    url:'.....',
    data:{ uname:"zhangsan"},
        success:function(data){
            var boj = JSON.parse(data);
            sth of data
        }
}};

  参数:
    type:    请求方式GET/POST
    url:       请求地址url
    async:    是否异步,默认是true异步
    data:    发送到服务器的数据
    dataType:   预期服务器返回的数据类型
    contentType:  设置请求头
    success:     请求成功时调用这个函数
    error:        请求失败时调用这个函数
 $.get

$get(
  "url",
  {params1:"aaaa",params2:"bbb"},
  function(data){   sth with data
  }
);

  失败时如果要执行error,
    1.请求json文件,忽略返回值
    2.
    3.
    4.
 $.post
  与get语法相同
 $.getJSON
  要求返回格式必须是Json格式的,Json格式的字符串也行,非Json会不识别

暂缺TypeScript Ajax 及rxjs

posted @ 2022-02-25 22:42  画饼躺平学习冲  阅读(34)  评论(0)    收藏  举报