zoukankan      html  css  js  c++  java
  • JS原生Ajax操作(XMLHttpRequest)

    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;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 };

    转自东小东博客园:

    https://www.cnblogs.com/dongxiaodong/p/10422403.html

     

  • 相关阅读:
    关于[x/y]一些小想法
    mycat主从读写分离范例
    EOJ 262 润清的烦恼
    mycat server.xml 配置文件详解
    Mongodb in Mycat指南
    牛客网NOIP赛前集训营-普及组(第一场)
    MyCAT分表初体验
    牛客网NOIP赛前集训营-提高组(第一场)
    日期类型的特殊性 -- 日期函数转换
    POJ 1966 Cable TV Network 【经典最小割问题】
  • 原文地址:https://www.cnblogs.com/qqfff/p/12358595.html
Copyright © 2011-2022 走看看