• 网页的异步请求(Ajax)


    JS原生Ajax操作(XMLHttpRequest)

    GET请求

     1 var xmld=new XMLHttpRequest();
     2 xmld.open("GET","wan.php"+"?dd1=dong11&dd2=dong22"); //打开页面
     3 xmld.setRequestHeader("dh","donghhhh");//设置请求头
     4 xmld.send(null); //发送数据需要手动在url添加
     5 xmld.onreadystatechange=function(){ 
     6 if(xmld.readyState == 4){
     7     //获取返回数据
     8     alert(xmld.getResponseHeader("Server"));//获取响应头
     9     alert(xmld.status+"--"+xmld.statusText);//得到如200:ok、404:Not Found 等等
    10     alert(xmld.responseText); //得到字符串
    11     //var xx=xmld.responseXML //得到HTML对象
    12         }
    13 };

    POST请求

     1 var xmld=new XMLHttpRequest();
     2 xmld.open("POST","wan.php"); //打开页面
     3 xmld.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//设置请求头
     4 xmld.send("dd1=dong11&dd2=dfikij"); //发送数据
     5 xmld.onreadystatechange=function(){ 
     6     if(xmld.readyState == 4){
     7     //获取返回数据
     8     alert(xmld.getResponseHeader("Server"));//获取响应头
     9     alert(xmld.status+"--"+xmld.statusText);//得到如200:ok、404:Not Found 等等
    10     alert(xmld.responseText); //得到字符串
    11     //var xx=xmld.responseXML //得到HTML对象
    12     }
    13 };

    兼容性问题

    if(XMLHttpRequest){
        //系列操作
    }else{
        alert("浏览器不支持");
    }

    利用iframe模拟ajax

    实现表单提交的返回结果在iframe中进行显示,实现主页面不刷新效果,也可以模拟上传文件,推荐使用,兼容性最好

     1 <iframe id="ifd" name="dongff"></iframe>
     2 <form action="wan.php" method="post" target="dongff">
     3 <input type="text" name="dd1">
     4 <input type="text" name="dd2">
     5 <input type="submit" onClick="subd()">    
     6 </form>
     7 //获取返回内容
     8 <script src="jquery-3.3.1.min.js"></script>
     9 <script>
    10 //在点击提交按钮时给iframe添加加载完毕事件    
    11 function subd(){
    12     //等待iframe内容加载完毕时进入
    13     $("#ifd").on('load',function(){
    14         //得到iframe的内容
    15         var ifdtext=$("#ifd").contents().find("body").text();
    16         alert(ifdtext);
    17     });
    18 }
    19 </script>

    基于jquery的ajax

    Get请求,参数(URL,数据,回调函数)

    $.get("wan.php",{namex:"myname",passwd:"123"},function(datax){
        $("p").text(datax);//datax为返回的数据
    });

    Post请求,参数与get一致

    $.post("wan.php",{namex:"myname",passwd:"123"},function(datax){
        $("p").text(datax);//datax为返回的数据
    });

    加载HTML碎片,返回结果会覆盖掉id为div1id标签的内容

    $("#div1id").load("uu.html",function(a,b,c){
    if(b=="error"){
        $("#div1id").text("加载失败");
        }
    });

    结合版:

     1 $.ajax({
     2     url:"wan.php",
     3     type:"POST",
     4 //headers:{"dongh":"dongssssss"}, //设置请求头,涉及跨域时不要进行设置
     5     data:{"xx":123456,"user":"dddd"},
     6     success:function (data) {
     7         alert(data);
     8     },
     9     error: function (XMLHttpRequest, textStatus, errorThrown) {
    10         // 状态码
    11         alert(XMLHttpRequest.status);
    12         // 状态
    13         alert(XMLHttpRequest.readyState);
    14         // 错误信息
    15         alert(textStatus);
    16     }
    17 
    18 });

    Ajax的跨域请求

    如果在浏览器控制台看到类似如下的错误,表示存在跨域请求数据,即两个网页不是在同一个服务器上

    Access to XMLHttpRequest at 'http://193.112.87.66/add.php?namex=myname&passwd=123' from origin 'http://192.168.43.21:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

    解决方法如下,在访问的页面中添加响应头内容

    1 <?php 
    2 // 指定允许其他域名访问
    3 header('Access-Control-Allow-Origin:*');
    4 // 响应类型
    5 header('Access-Control-Allow-Methods:POST');
    6 // 响应头设置
    7 header('Access-Control-Allow-Headers:x-requested-with,content-type');

    异步文件上传

    自定义文件上传按钮(点击试试效果):

    东文件

    利用页内标签定位浮动,实现等大的input标签浮于div标签之上,并将自身透明度设置为零,span的标签为显示的文字

    1 <div style="height: 50px; 80px;background-color:aqua;text-align: center;line-height: 50px;position: relative">
    2 <span>东文件</span>
    3 <input type="file" id="infileid" style="height: 50px; 80px;position: absolute;opacity: 0; bottom: 0px;left: 0px;top: 0px;right: 0px">
    4 </div>

    原生ajax文件上传

     1 function subd(){
     2       
     3     var fileobjx=document.getElementById("infileid").files[0];//得到文件对象
     4     //创建form表单对象
     5     var formobjx=new FormData();
     6     formobjx.append("namexx","dong111");
     7     formobjx.append("dongfile",fileobjx);
     8     
     9     var xmld=new XMLHttpRequest();
    10     xmld.open("POST","wan.php"); //打开页面
    11     xmld.send(formobjx); //发送form数据
    12     xmld.onreadystatechange=function(){ 
    13     if(xmld.readyState == 4){
    14     alert(xmld.responseText); //得到字符串
    15     }
    16 };

    Jquery的ajax文件上传

     1 function subd(){
     2     var fileobjx=document.getElementById("infileid").files[0];//得到文件对象
     3     //创建form表单对象
     4     var formobjx=new FormData();
     5     formobjx.append("namexx","dong111");
     6     formobjx.append("dongfile",fileobjx);
     7     $.ajax({
     8     url:"wan.php",
     9     type:"POST",
    10     data:formobjx,
    11     processData: false,
    12     contentType: false,
    13     success:function (data) {
    14         alert(data);
    15     },
    16     error: function (XMLHttpRequest, textStatus, errorThrown) {
    17         // 错误信息
    18         alert(textStatus);
    19     }
    20 
    21    });
    22 
    23 };
  • 相关阅读:
    ASP.NET 读取FTP文件流
    ASP.NET XML序列化
    ASP.NET Core 微信支付(四)【支付结果通知回调(未按照官方步骤) APIV3】
    ASP.NET Core 微信支付(三)【查询订单 APIV3】
    pytest系列(四)
    pytest系列(五)
    2021金三银四
    2021金三银四
    requests- 处理 multipartform-data 类型的上传接口
    html5 video(html中播放视频的标签)
  • 原文地址:https://www.cnblogs.com/dongxiaodong/p/10422403.html
Copyright © 2020-2023  润新知