13Ajax

Ajax

ajax(Asynchronous Javascript And Xml :异步的JavaScript和XML

目的是让JavaScript发送的http请求,与后台通信,获取数据和信息

Ajax技术的原理是实例化xmlhttp对象,使用此对象与后台通信,在通信过程中不会影响后续的JS执行,从而实现异步操作

同步和异步

现实生活中,同步指的是同时做几件事情,异步指的是做完一件事后再做另外一件事,程序中的同步和异步是把现实生活中的概念对调

  • 同步就是做完一件事(任务)后再做另一件事,后一件的执行依赖于前一件事件的完成。同步会影响到后面的JS代码的执行时间

  • 异步是指同时可以做多件事情(任务)。不会影响到后面JS代码的执行时间

局部刷新和无刷新

  • Ajax可以实现局部刷新,也叫无刷新,就是整个页面不刷新,只是局部刷新而已

  • Ajax可以自己发送请求,不用通过浏览器地址栏,所以页面不会刷新

用Ajax发送请求

    写法1:
        $.ajax({
            type:'get/post',                                // 请求的方式,默认为get
            url:'请求的文件名或后台接口地址',                // 请求的地址
            async:true/false ,                              // 异步或同步,默认为true
            data:{                                          // 上传到服务器端的数据
                // 数据
            },
            dataType:'json/jsonp/xml/text/javascript',      // 返回的数据类型或解决跨域(jsonp)
            success:function(res){                          // 成功回调的处理
                // 成功回调的处理代码
            },
            error:function(err){                            // 失败回调的处理
                // 失败回调的处理代码
            },
            timeout:时间(毫秒),                             // 请求超时时间
            ...
        })
    写法2:
        $.ajax({
            type:'get/post',                                // 请求的方式,默认为get
            url:'请求的文件名或后台接口地址',                // 请求的地址
            async:true/false ,                              // 异步或同步
            data:{                                          // 上传到服务器端的数据
                // 数据
            },
            dataType:'json/jsonp/xml/text/javascript',      // 返回的数据类型或解决跨域(jsonp)
​
            timeout:时间(毫秒),                             // 请求超时时间
            ...
        }).done(function(){                                 // 成功回调的处理
            ...
        }).fail(function(){                                 // 失败回调的处理
            ...
        })
​
    写法3(推荐写法):
        $.ajax({
            type:'get/post',                                // 请求的方式,默认为get
            url:'请求的文件名或后台接口地址',                // 请求的地址
            async:true/false ,                              // 异步或同步
            data:{                                          // 上传到服务器端的数据
                // 数据
            },
            dataType:'json/jsonp/xml/text/javascript',      // 返回的数据类型或解决跨域(jsonp)
​
            timeout:时间(毫秒),                             // 请求超时时间
            ...
        }).then(function(){                                 // 成功回调的处理
            ...
        }).catch(function(){                                 // 失败回调的处理
            ...
        })

JSONP

同源策略

  • 同源策略 是由NetScape提出的一个著名的安全策略

  • 所谓的同源,指的是协议,域名,端口相同。浏览器处于安全方面的考虑,只允许本域名下的接口交互,不同源的客户端脚本,在没有明确授权的情况下,不能读写对方的资源

    http://127.0.0.1:8080 http为协议,127.0.0.1为域名,8080为端口

  • 只要协议、域名和端口中任意一个不相同,就会出现跨域情况。

在JQ中解决跨域问题

A JAX只能请求同一个域下的数据或资源,有时候需要跨域请求数据,就需要用到JSONP技术,JSONP可以跨域请求数据,它的原理主要是利用了<script>标签可以跨域链接资源的特性。JSONP和A JAX原理完全不一样,不过jquery将它们封装成同一个函数。

        $.ajax({
            ...
            dataType: 'jsonp',
            ...
        }).then(function(){
            ...
        })

猜你喜欢

转载自blog.csdn.net/weixin_42248871/article/details/110717410
13
13)