目录

一、前后端

二、前后端接口

三、Ajax

1. ajax接口步骤

2. 返回为json格式

四、请求方式

五、案例:登录


 一、前后端

前端:用户可以看见的界面,我们一般浏览网页时看到的界面,展现网页数据给用户看的地方。

后端:要将前端的数据存储到数据库中,并且把数据库的数据传递给前端。

数据库:存储数据的地方。

前后端交互:前端将数据传递给服务端,并且能够从服务端接收到返回的数据的过程。

二、前后端接口

前端与后端进行数据交互的统称, 也叫做数据接口, 指前端通过HTTP(ajax)请求获取到的数据或者执行的某项操作。 为确保前后端(工程师)的协作沟通, 一般由前端和后端一起来定义接口的规范, 规范的内容一般包含接口的地址, 接口的输入参数输出的数据格式(结构), 最终由后端来实现这些规范, 为前端提供符合规范的接口。

接口文档:一个文本,详细写了服务器的一些信息,包括请求信息,请求方式,携带参数,响应数据等。前端需要按照接口文档进行开发。

(详见:https://github/f2e-journey/treasure/blob/master/api.md)

三、Ajax

1. ajax接口步骤

1.  创建 ajax 对象

        var xhr = new XMLHttpRequest()

2. 配置本次请求信息

        xhr.open(请求方式,请求地址,是否异步)

        请求方式:按照接口文档进行书写
        请求地址:按照接口文档书写,基准地址+请求地址
        是否异步:默认是 true 表示异步请求,选填为false,表示同步请求

3. 注册请求完成事件

        xhr.onload = function () {}

        请求完成:本次请求发送出去,服务器接收到了我们的请求,并且服务器返回的信息已经回到浏览器。

        如何拿到后端返回的数据? 语法:xhr.responseText

4. 把请求发送出去

        xhr.send()

例如:

    <script>
        //1. 创建一个ajax 对象
        var xhr = new XMLHttpRequest()

        //2.配置本次请求信息
        //请求方式:按照接口文档进行书写
        //请求地址:按照接口文档书写,基准地址+请求地址
        //是否异步:默认是 true 表示异步请求,选填为false,表示同步请求
        xhr.open('GRT', 'http://localhost:8080/test/first', true)

        //3. 配置一个请求完成后触发的事件
        //请求完成:本次请求发送出去,服务器接收到了我们的请求,并且服务器返回的信息已经回到浏览器
        xhr.upload = function () {
            //如何拿到后端返回的数据
            //语法:xhr.responseText
            console.log(xhr.responseText)

            console.log('请求完成')
        }

        //4. 把本次请求发送出去
        xhr.send()
    </script>

2. 返回为json格式

当后端返回的是json 格式的数据的时候,我们需要进行单独的解析 

语法:JSON.parse(xhr.responseText)

返回值:解析好的 js 格式的数据

    <script>
        //1. 创建一个ajax 对象
        var xhr = new XMLHttpRequest()

        //2. 配置本次的请求信息
        xhr.open('GRT', 'http://localhost:8080/test/scend', true)

        //3. 配置一个请求完成后触发的事件
        xhr.upload = function () {
            //解析json格式
            var res = JSON.parse(xhr.responseText)
            console.log(res)
        }

        //4. 把本次请求发送出去
        xhr.send()
    </script>

四、请求方式

get 与 post 的区别
GETPOST
偏向获取的语义化偏向提交的语义化
参数是查询字符串参数格式多样,但是需要特殊说明
大小有限制 2KB 左右理论上没有限制
参数位置在地址后面

             参数位置在请求体内

        //1. Get请求
        var xhr = new XMLHttpRequest()

        //需要携带参数
        //get请求,直接写在地址后面进行参数的书写
        xhr.open('GET','http://localhost:8080/test/third?name=小张小张啊&name=19', true)
        xhr.onload = function () {
            console.log(JSON.parse(xhr.responseText))
        }
        xhr.send()


        //2. POST请求
        var xhr = new XMLHttpRequest()

        //需要携带参数
        //post请求,不用写在地址后面进行参数的书写
        xhr.open('POST','http://localhost:8080/test/third', true)
        xhr.onload = function () {
            console.log(JSON.parse(xhr.responseText))
        }
        //注意:当发送POST请求时,并且需要携带参数时,需要进行特殊说明
        //语法:xhr.setRequestHeader('content-type',你传递参数的格式)
        xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')

        //send后面()内书写请求体的位置
        xhr.send('name=小张小张啊&name=19')

五、案例:登录

分析需求:

问题1: 什么时候进行发送请求?

        点击登录按钮的时候,需要给 form 标签绑定一个表单提交事件。

问题2:需要拿到哪些信息?

        需要拿到用户填写的用户名和密码。

问题3:需要如何发送给后端?

        按照接口文档的规范进行发送。

问题4:请求完成以后,我们需要做些什么?

        根据后端返回的信息,进行一些后续的操作。如果后端返回的是登录成功,那么我们进行页面跳转;如果后端返回的是登录失败,那么我们提示用户错误。

代码详见文章:JavaScript案例(六):前后端交互-登录案例_小张小张啊的博客-CSDN博客

 文章参考视频:b站千锋前端学习营:千锋前端JavaScript全套教程_JS零基础完美入门到项目实战https://www.bilibili/video/BV1W54y1J7Ed?share_source=copy_web

更多推荐

JavaScript 学习笔记(八)前后端交互;Ajax进行前后端交互