数据交互

1、表单(最简单、基本)

(1)、属性

    (a)、action:提交到哪里
    (b)、method:提交方式,如:GET;POST;PUT;HEADER;DELETE;自定义
    (c)、name:必须加,可以重复
    (d)、submit按钮:提交

<form action="localhost/1.php" method="post">
    用户名:<input type="text" name="user"><br>
    密码:<input type="password" name="pwd"><br>
    <input type="submit" value="提交">
</form>
(2)、方式

GET和POST安全性差不多,https才安全
GET和POST的区别:
    GET:容量小(32KB级别)、地址栏传输看得见、有缓存;利于分享、收藏
    PSOT:容量大(1GB级别)、http-body里传输看不见、无缓存;不利于分享、收藏

(3)、校验
<form action="localhost/1.php" method="post">
    用户名:<input type="text" name="user"><br>
    密码:<input type="password" name="pwd"><br>
    <input type="submit" value="提交">
</form>
<script>
    const $ = document.querySelectorAll.bind(document);
    let form = $("form")[0];
    let user = document.getElementsByName("user")[0];
    form.onsubmit = function(){
        if(user.value == ""){
            alert("用户名不能为空");
            return;
        }
    }
</script>

2、ajax(不用刷新)

客户端(浏览器)
//简单的原生xhr请求的写法
<script>
    const $ = document.querySelectorAll.bind(document);
    $("#btn1")[0].onclick = function () {
        //创建一个xhr的对象,以便发送请求
        let xhr;
        if (window.XMLHttpRequest) {
            xhr = new XMLHttpRequest();
        } else {
            xhr = new ActiveXObject(Microsoft.XMLHTTP);
        }
        // 连接,第三个参数表示是否异步
        xhr.open("get", "1.php", true);
        // 发送
        xhr.send();
        xhr.onreadystatechange = function () {
            switch (xhr.readyState) {
                case 0:
                    console.log("初始化中,建立连接");
                    break;
                case 1:
                    console.log("已连接");
                    break;
                case 2:
                    console.log("已发送");
                    break;
                case 3:
                    console.log("已接收--头");
                    break;
                case 4:
                    console.log("已接收--body");
                    break;
                default: 
                    console.log("哈哈哈");
                    break;
            }
        }
    }
</script>

xhr对象的readyState和status(状态码)的解释

readyState的值 表示含义
0 初始化--刚刚创建
1 已连接
2 已发送
3 已接收--header
4 已接收--body
status的值 表示含义
1xx 消息
2xx 成功
3xx 重定向
4xx 客户端错误
5xx 服务端错误

状态码301:永久重定向---浏览器不会再次请求旧的地址
状态码302:临时重定向---浏览器下次还会请求旧的地址
状态码304:缓存---请求的文件未被修改
状态码404:未找到文件
content-type常用的三种方式

content-type 传输方式 数据类型
text/plain 直接传输 纯文本
application/x-www-form-urlencoded 以&拼接 简单数据
mutipart/form-data 定界符分割各个数据(文件上传) 文件上传
服务端

3、jsonp(跨域、简单、有风险)

jsonp是利用script标签可以进行跨域访问数据的方式,动态的添加script标签利用回调函数完成代码执行的过程,解决跨域访问数据的问题,将来jsonp会用的越来越少,了解下即可。

<input type="text" name="搜索" id="search">
<ul id="content"></ul>
<script>
    function show(json) {
        let ct = $("#content")[0];
        ct.innerHTML = "";
        json.s.forEach(str => {
            let li = document.createElement("li");
            li.innerText = str;
            ct.appendChild(li);
        })
    }
</script>
<script>
    const $ = document.querySelectorAll.bind(document);
    $("#search")[0].oninput = function () {
        let os = document.createElement("script");
        document.body.appendChild(os);
        os.src =`https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=${encodeURIComponent(this.value)}&cb=show`;
    }
</script>

4、websocket

ajax和websocket的比较

交互方式 ajax websocket
性能 性能低 性能高
通信方式 单向 双向(双工)
跨域 跨域麻烦 直接跨域

5、http协议

http 容易被攻击
https security 安全

  1. http1.0 一次性连接
  2. http1.1 保持连接
  3. http2.0
    (1)、强制https
    (2)、自带双向通信
    (3)、多路复用

6、TCP/IP五层模型

OSI层 功能 相关协议
应用层 文件传输、电子邮件、文件服务、虚拟终端 HTTP、FTP、DNS
传输层 提供端对端的接口 TCP、UDP
网络层 为数据包选择路由 IP、ICMP
数据链路层 传输有地址的帧,错误检测功能 SLIP、CSLIP、RAPR
物理层 以二进制数形式在物理媒介上传输数据 ISO2110、IEEE802
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容