前端开发网络——Ajax(GET、POST)

 ajax请求的过程

我们平时输入的网址,比如www.baidu.com,就会被解析成14.215.177.39这一串数字,然后发送请求给后台服务器(客户端发送http请求)。

服务器会确认你发送的是什么请求,需要请求什么东西(三次握手)。

拿到服务器返回的数据后就传回给页面了,这时候就跟服务器告别(四次挥手)。

传回给浏览器渲染页面(html,css,js)。

 Ajax的实际运作,好比做一个定外卖的过程

封装Ajax

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8 </head>
 9 <body>
10     <form>
11         <input type="text" name="urername" id="username">
12         <input type="text" name="age" id="age">
13         <input type="submit" id="sbm" value="提交">
14     </form>
15     <ol id="ol"></ol>
16     <button id="btn">请求新闻</button>
17     <!-- Ajax
18     1.浏览器
19     2.Ajax对象
20     3.Ajax.open(method, url, true);
21     4.Ajax.send();
22     5.onreadtstatechage 4
23     6.status == 200 403 503 -->
24 
25     <script>
26     //请求新闻的监听事件
27     btn.onclick = function(){
28         ajaxFunc('GET', './getNews.php', '', showList, true);
29     }
30 
31     //请求form表单的监听事件
32     sbm.onclick = function(e){
33         e.preventDefault();//取消默认提交form表单的事件
34         var data = 'username=' + username.value + '&age=' + age.value;
35         ajaxFunc('POST', './post.php', data, showPerson, true);
36     }
37 
38 
39 
40     //封装的Ajax函数
41     function ajaxFunc(method, url, data, callback, flag){
42 
43         //创建Ajax对象
44         var xhr = null;
45         if(window.XMLHttpRequest){//浏览器兼容
46             xhr = new XMLHttpRequest();
47         }else{
48             xhr = new ActiveXObject('Microsoft.XMLHttp');
49         }
50 
51         method = method.toUpperCase();
52         if(method == 'GET'){//判断传入的是GET请求还是POST请求
53             //向后端发送请求,获取数据
54             xhr.open(method, url, + '?' + data, flag);//请求方式  请求地址  异步请求
55             //把Ajax发送出去
56             xhr.send();
57         }else if(method == 'POST'){
58             //向后端发送请求,获取数据
59             xhr.open(method, url, flag);//请求方式  请求地址  异步请求
60             //设置请求头
61             xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
62             //把Ajax发送出去
63             xhr.send(data);
64         }
65 
66         //监听返回的数据     数据解析分为4个阶段 1.读取 2.已读取 3.交互中 4.完成
67         xhr.onreadystatechange = function(){ //数据状态改变一次就会触发一次
68             if(xhr.readyState == 4){ //数据是不是为4的状态,4为响应内容解析完成
69                 if(xhr.status == 200){
70                     
71                     callback(xhr.responseText);
72                 }
73             }
74         }
75     }
76 
77     //GET请求的回调函数
78     function showList(data){
79         var value = JSON.parse(data);
80         var str = '';
81         value.forEach(function(ele, index){
82             str += '<li>' + ele.title  + '-' + ele.date + '</li>';
83         })
84         ol.innerHTML = str;
85     }
86 
87 
88     //POST请求的回调函数
89     function showPerson(data){
90         alert(data);
91     }
92     </script>
93 </body>
94 </html>

------------------------------------------------------

get:主要用来获取数据的。

post:主要用来往后端传数据的

posted @ 2019-07-11 13:48  杨培贤  阅读(515)  评论(0编辑  收藏  举报