前后端数据交互

内容:

1.表单

2.Ajax

3.jsonp

4.WebSocket

1.表单

表单 -> 前后端数据交互最基本的最常见的,其实本质上说http数据请求都是表单

1 <!-- 表单必须包在form标签中 提交数据的按钮类型必须是submit form的action属性指定提交地址,method属性指定提交方法(get or post) -->
2 <form action="" method="post">
3     <input type="text" name="username" placeholder="请输入用户名">
4     <input type="password" name="password" placeholder="请输入密码">
5     <input type="submit" value="提交"> 
6 </form>

2.Ajax

(1)什么是Ajax

AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术

AJAX = Asynchronous JavaScript and XML,意思就是用JavaScript执行异步网络请求

AJAX 是一种用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交换,使网页实现异步更新。这意味着可以在不重载整个页面的情况下,对网页的某些部分进行更新。

而传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个页面。

(2)Ajax优缺点

  • 优点:Ajax不用刷新就可以提交请求获取数据;另外Ajax可以跨域
  • 缺点:Ajax性能低、跨域麻烦、只能单向通信、复杂业务处理麻烦

(3)原生Ajax

 1 // GET
 2 // 创建 AJAX 对象
 3 var r = new XMLHttpRequest()
 4 // 设置请求方法和请求地址
 5 r.open('GET', '/login', true)
 6 // 注册响应函数
 7 r.onreadystatechange = function() {
 8     console.log('state change: ', r)
 9 }
10 // 发送请求
11 r.send()
12 
13 
14 // POST
15 // 创建 AJAX 对象
16 var r = new XMLHttpRequest()
17 // 设置请求方法和请求地址
18 r.open('POST', '/login', true)
19 // 设置发送的数据的格式
20 r.setRequestHeader('Content-Type', 'application/json')
21 // 注册响应函数
22 r.onreadystatechange = function() {
23     if (r.readyState === 4) {
24         console.log('state change: ', r, r.status, r.response)
25         // 转换格式
26         var response = JSON.parse(r.response)
27         console.log('response', response)
28     } else {
29         console.log('change')
30     }
31 }
32 // 发送请求
33 var account = {
34     username: 'gua',
35     password: '123',
36 }
37 var data = JSON.stringify(account)
38 r.send(data)

Ajax封装成函数:

 1 /*
 2  ajax 函数
 3 */
 4 var ajax = function(method, path, data, reseponseCallback) {
 5     var r = new XMLHttpRequest();
 6     // 设置请求方法和请求地址
 7     r.open(method, path, true);
 8     // 设置发送的数据的格式为 application/json
 9     // 这个不是必须的
10     r.setRequestHeader('Content-Type', 'application/json');
11     // 注册响应函数
12     r.onreadystatechange = function() {
13         if(r.readyState === 4) {
14             // r.response 存的就是服务器发过来的放在 HTTP BODY 中的数据
15             reseponseCallback(r.response);
16         }
17     };
18     // 把数据转换为 json 格式字符串
19     data = JSON.stringify(data);
20     // 发送请求
21     r.send(data);
22 };

(4)jQuery的Ajax

 1 // 第一种方法:
 2 $.post(url,sendData,function(){});
 3 $.get(url,sendData,function(){});
 4 
 5 // 第二张方法:
 6 $.ajax({
 7     "type": POST/GET,   //提交的方式
 8     "url": "\*\*\*?time="+new Date().getTime(),  //传递到服务器的url
 9     "data": {    //发送的数据,以JSON数据传递
10         "key1": value1,
11         "key2": value2
12     },
13     "success": function(backData,textStatus,ajax){   //成功之后执行的函数
14     }
15 });

3.jsonp

jsonp:跨域、安全性差

Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据

jsonp使用实例:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta charset="utf-8">
 5     <title>JSONP 实例</title>
 6     <script src="http://cdn.static.runoob.com/libs/jquery/1.8.3/jquery.js"></script>    
 7 </head>
 8 <body>
 9 <div id="divCustomers"></div>
10 <script>
11 $.getJSON("http://www.runoob.com/try/ajax/jsonp.php?jsoncallback=?", function(data) {
12     
13     var html = '<ul>';
14     for(var i = 0; i < data.length; i++)
15     {
16         html += '<li>' + data[i] + '</li>';
17     }
18     html += '</ul>';
19     
20     $('#divCustomers').html(html); 
21 });
22 </script>
23 </body>
24 </html>

4.WebSocket

(1)什么是WebSocket

WebSocket 是一种网络通信协议。RFC6455 定义了它的通信标准。WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议

WebSocket的优点:性能高

详细介绍:https://www.cnblogs.com/fuqiang88/p/5956363.html

(2)WebSocket与Ajax对比

Ajax:性能低、单向通信、跨域麻烦

WebSocket:性能高、双向通信、直接跨域

猜你喜欢

转载自www.cnblogs.com/wyb666/p/9630787.html