zoukankan      html  css  js  c++  java
  • WEB前端

    【Ajax】

    【同步与异步】

    同步交互:请求的返回的数据会覆盖之前的数据
    异步交互:页面不刷新,页面的部分地方刷新,页面的额部分地方就可以完成与服务器的数据交互

    【底层实现:XMLHttpRequest-JavaScript提供的API中的对象】

    请求流程:
        
    一个js事件被触发 -》执行一个方法,调用异步方法;
                            (1)通过XMLHttpRequest发送请求,并通过XMLHttpRquest接受响应;?具体访问实现过程是什么?
                                        [1]创建XMLHttpRequest对象
                                                var xhr=new XMLHttpRequest();
                                        [2]打开与服务器的一个链接
                                                xhr.open("post","url..");
                                                xhr.setRequestHeader("Content-Type","xxxxx");//设置请求头-http协议规定的参数值;
                                                
                                        [3]发送请求参数
                                                xhr.send("xxxx");
                                        [4]服务器返回数据给客户端,同时返回一些状态,监听服务器端的状态改变
                                                //监听响应状态
                                                xhr.onreadystatechange=function(){
                                                    //服务器响应状态:0,1,2,3,4
                                                    //响应完成=4,注:不等于响应成功;xhr.readyState==4;
                                                    //响应成功=状态码:200;xhr.status=200;
                                                    //响应数据:xhr.responseText;
                                                }
                            (2)通过DOM把数据显示到界面;

    【ajax跨域请求】!!!

    (1) 什么是跨域请求;

    域 -> URL中域名,IP,端口不同都是跨域;就是跨域名访问;- 会有安全限制;
    eg:在A站点访问B站点数据时;

    (2) jQuery-ajax实现跨域

    《实现1》dataType : "jsonp";
        简单原理:动态创建script 标签,然后利用 script 的 SRC 不受同源策略约束来跨域获取数据。
                  缺点!!是需要后端配合输出特定的返回信息-回调函数格式;
        
        1 前端设置:dataType : "jsonp",//开启跨域;客户端给服务端传递一个回调函数,服务端返回的是一个回调函数的调用,并将数据放在回调函数中作为参数传递过来。
                    注:ajax一般使用js的XMLHttpRquest对象实现异步;
                        若设置dataType=jsonp;则不用xhr,使用script标签;内部会有一个回调函数;
        2 后台服务设置: 
            
        
    《实现2:思路》
            利用反应代理的机制来解决跨域的问题,
            前端请求的时候先将请求发送到同源地址的后端,
            通过后端请求转发来避免跨域的访问。

    【新:背景】

    HTML5支持了CORS协议。
    CORS 是一个 W3C 标准,全称是”跨域资源共享”(Cross-origin resource sharing),
    允许浏览器向跨源服务器,发出 XMLHttpRequest 请求,从而克服了 AJAX 只能同源使用的限制。
    它通过服务器增加一个特殊的 Header[Access-Control-Allow-Origin]来告诉客户端跨域的限制,
    如果浏览器支持 CORS、并且判断 Origin 通过的话,就会允许 XMLHttpRequest 发起跨域请求。
    前端使用了 CORS 协议,就需要后端设置支持非同源的请求,对于SpringBoot 对于CORS 同样有着良好的支持;

    【springboot设置跨域请求支持】

    [坑]
        ajax请求的datatyp为html.....日!一般都是json,居然必须要html;

    参:其他...暂时不详
  • 相关阅读:
    java练习题(字符串类):显示4位验证码、输出年月日、从XML中抓取信息
    java练习题:输出100以内与7有关的数、百马百担、打分(去掉最高、最低分)、二分法查找数据、输出直角三角形、正三角形
    MD5加密算法(转)
    Ajax中的局部事件与全局事件
    Ajax实现全国省市三级联动
    关于Cookie中存放于读取中文字符的问题,以及删除Cookie
    JavaScript中的自定义对象以及实现继承特性
    JavaScript中的变量范围以及闭包的概念
    JavaScript全局函数
    Servlet监听器(转)
  • 原文地址:https://www.cnblogs.com/floakss/p/12918322.html
Copyright © 2011-2022 走看看