美文网首页
05Ajax-jQuery中的ajax方法

05Ajax-jQuery中的ajax方法

作者: 东邪_黄药师 | 来源:发表于2020-11-28 17:17 被阅读0次

$.ajax()方法概述

    <button id="btn">发送请求</button>
    <script src="/js/jquery.min.js"></script>
    <script>
        $('#btn').on('click', function () {
            $.ajax({
                // 请求方式
                type: 'post', // 或者get
                // 请求地址
                url: '/base',
                // 请求成功以后函数被调用
                success: function (response) {
                    // response为服务器端返回的数据
                    // 方法内部会自动将json字符串转换为json对象
                    console.log(response);
                },
                // 请求失败以后函数被调用
                error: function (xhr) {
                    console.log(xhr)
                }
            })
        });
    </script>
</body>

$.ajax方法传递请求参数

<body>
   <button id="btn">发送请求</button>
   <script src="/js/jquery.min.js"></script>
   <script>
       var params = {name: 'wangwu', age: 300}
       $('#btn').on('click', function () {
           $.ajax({
               // 请求方式
               type: 'get',
               // 请求地址
               url: '/user',
               // 向服务器端发送的请求参数
               // name=zhangsan&age=100
               // data: {
               //  name: 'zhangsan',
               //  age: 100
               // },
               data: JSON.stringify(params),
               // 指定参数的格式类型
               contentType: 'application/json',
               // 请求成功以后函数被调用
               success: function (response) {
                   // response为服务器端返回的数据
                   // 方法内部会自动将json字符串转换为json对象
                   console.log(response);
               }
           })
       });
   </script>
</body>

beforeSend方法的说明

$('#btn').on('click', function () {
            $.ajax({
                // 请求方式
                type: 'post',
                // 请求地址
                url: '/user',
                // 在请求发送之前调用
                beforeSend: function () {
                    alert('请求不会被发送')
                    // 请求不会被发送
                    return false;
                },
                // 请求成功以后函数被调用
                success: function (response) {
                    // response为服务器端返回的数据
                    // 方法内部会自动将json字符串转换为json对象
                    console.log(response);
                }
            })
        });

serialize方法说明

$('#form').on('submit',function(){
            //console.log('2222')
            // 将表单内容拼接成字符串类型的参数
            var params = $('#form').serialize();
            console.log(params)
            
            return false
        })
image.png

serializeArray()将表单中用户输入的内容转换为对象类型

$('#form').on('submit', function () {
            // 将表单内容拼接成字符串类型的参数
            // var params = $('#form').serialize();
            // console.log(params)
            serializeObject($(this));
            return false;
        });

        // 将表单中用户输入的内容转换为对象类型
        function serializeObject (obj) {
            // 处理结果对象
            var result = {};
            var params = obj.serializeArray();
            // 循环数组 将数组转换为对象类型
            $.each(params, function (index, value) {
                result[value.name] = value.value;
                // console.log(index)
                // console.log(value)
            })
            console.log(result)
            return result
        }
image.png

发送jsonp请求

$('#btn').on('click', function() {
                $.ajax({
                    url: '/jsonp',
                    // 向服务器端传递函数名字的参数名称
                    jsonp: 'cb',
                    // 代表现在要发送的是jsonp请求
                    dataType: 'jsonp',
                    jsonpCallback: 'fn',
                    success: function(response) {
                        console.log(response)
                    }
                })
            });

.get、.post方法的使用

  • 作用:.get方法用于发送get请求,.post方法用于发送post请求。
$.get('http://www.example.com', {name: 'zhangsan', age: 30}, function (response) {}) 
$.post('http://www.example.com', {name: 'lisi', age: 22}, function (response) {})

全局事件

只要页面中有Ajax请求被发送,对应的全局事件就会被触发

.ajaxStart()     // 当请求开始发送时触发
.ajaxComplete()  // 当请求完成时触发
// 当页面中有ajax请求发送时触发
            $(document).on('ajaxStart', function () {
                 NProgress.start() 
            })

            // 当页面中有ajax请求完成时触发
            $(document).on('ajaxComplete', function () {
                NProgress.done() 
            })

restful风格的api

传统请求地址回顾

GET http://www.example.com/getUsers         // 获取用户列表
GET http://www.example.com/getUser?id=1     // 比如获取某一个用户的信息
POST http://www.example.com/modifyUser      // 修改用户信息
GET http://www.example.com/deleteUser?id=1  // 删除用户信息
  • 一套关于设计请求的规范。
    GET: 获取数据
    POST: 添加数据
    PUT: 更新数据
    DELETE: 删除数据
RESTful API 的实现
image.png
服务端做法(node)
/ 获取用户列表信息
app.get('/users', (req, res) => {
    res.send('当前是获取用户列表信息的路由');
});

// 获取某一个用户具体信息的路由
app.get('/users/:id', (req, res) => {
    // 获取客户端传递过来的用户id
    const id = req.params.id;
    res.send(`当前我们是在获取id为${id}用户信息`);
});

// 删除某一个用户
app.delete('/users/:id', (req, res) => {
    // 获取客户端传递过来的用户id
    const id = req.params.id;
    res.send(`当前我们是在删除id为${id}用户信息`);
});

// 修改某一个用户的信息
app.put('/users/:id', (req, res) => {
    // 获取客户端传递过来的用户id
    const id = req.params.id;
    res.send(`当前我们是在修改id为${id}用户信息`);
});
  • 客户端请求
<script type="text/javascript">
        // 获取用户列表信息
        $.ajax({
            type: 'get',
            url: '/users',
            success: function (response) {
                console.log(response)
            }
        })

        // 获取id为1的用户信息
        $.ajax({
            type: 'get',
            url: '/users/1',
            success: function (response) {
                console.log(response)
            }
        })

        // 获取id为1的用户信息
        $.ajax({
            type: 'delete',
            url: '/users/101',
            success: function (response) {
                console.log(response)
            }
        })

        // 获取id为1的用户信息
        $.ajax({
            type: 'put',
            url: '/users/10',
            success: function (response) {
                console.log(response)
            }
        })
    </script>
image.png

相关文章

网友评论

      本文标题:05Ajax-jQuery中的ajax方法

      本文链接:https://www.haomeiwen.com/subject/rhhcwktx.html