zoukankan      html  css  js  c++  java
  • Ajax与jQuery的使用方法

    XMLHttpRequest

    var xhr = new XMLHttpRequest(); //首先创建XMLHttpRequest 的对象
    xhr.open("GET","js/data.json",true);//再对这个对象的open方法放入参数, 请求方式:get/post  ,请求地址:url  ,是否异步:true/false
    xhr.send(null);//发送请求,参数为向服务器传递的参数。

    xhr.onreadystatechange=function(){
      if(readystate==4){
        if(status==200){
          console.log(xhr.responseText);
        }
      }
    }

    GET 与 POST

      在提供服务器请求的过程中,有两种方式,分别是:GET 和 POST。在 Ajax 使用 的过程中,GET 的使用频率要比 POST 高。那么什么是GET和POST呢?下文揭晓。

      GET 请求

        GET 请求是最常见的请求类型,最常用于向服务器查询某些信息。必要时, 可以将查询字符串参数追加到 URL 的末尾,以便提交给服务器。

    xhr.open('get','diner/login?'+'name=Lee&age=100',true); 
      //一个通用的 URL 提交函数
      function addURLParam(url, name, value) {    
      //判断的 url 是否有已有参数 
      url += (url.indexOf('?') == -1 ? '?' : '&');     
      url += encodeURIComponent(name) + '=' + encodeURIComponent(value); 
      return url;
    }

       POST 请求

        POST 请求可以包含非常多的数据,我们在使用表单提交的时候,很多就是 使用的 POST 传输方式。

    xhr.open('post', 'diner/login', true); 

    对Ajax的封装

    function ajax(obj) {
                
                // 创建XMLHttpRequest
                var  xhr = new XMLHttpRequest();
                
                // 得到url
                var url = obj.url; // js/data.json?id=1
                var params = obj.data; // uname=zhang&upwd=123
                
                // 判断请求方式
                if (obj.method == "get") {
                    url += url.indexOf("?") == -1 ? "?" + params :  "&" + params;
                    // 打开请求 open(method,url,async)
                    xhr.open(obj.method,url,obj.async);
                    // 发送请求
                    xhr.send(null);
                } else {
                    // 打开请求 open(method,url,async)
                    xhr.open(obj.method,url,obj.async);
                    // 模拟表单提交
                    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
                    // 发送请求
                    xhr.send(params);
                }
                
                // 监听请求状态
                xhr.onreadystatechange = function () {
                    if (xhr.readyState == 4) { // 请求成功
                        callback(); // 调用回调方法
                    }
                }
                
                function callback() {
                    if (xhr.status == 200) { // 响应成功
                        // 调用对象的方法
                        obj.success(xhr.responseText);
                    } else { // 响应失败
                        alert("响应状态:" + xhr.status + ",错误信息:"+xhr.statusText + ",说明:" + xhr.responseText);
                    }
                }
                
            }
            

     jQuery的Ajax的使用方法

      $.ajax
       *  格式:$.ajax({})
       *  type:请求的方式GET/POST
       *  url:请求的路径
       *  data:传给服务器的数据
       *  dataType:服务器返回数据的类型,常用json,如果出现跨域问题设置为jsonp
       *  async:是否异步,默认是true表示异步
       *  success:请求成功时调用的函数
       *  error:请求失败时调用的函数

        

    $.ajax({
                type:"get",
                url:"js/data.json",
                data:"",
                dataType:"json",
                success:function(result){
                    console.log(result);
                    console.log(result.uname);
                    // 得到div对象
                    var div = $("div");
                    var unameHtml = "姓名:<input type='text' value='result.uname' />";
                    var upwdHtml = "密码:<input type='password' value='"+result.upwd+"' />";
                    div.append(unameHtml);
                    div.append(upwdHtml);
                }
            });
    $.ajax({
                type:"post",
                url:"http://localhost:8080/xwc/account",
                data:"",
                dataType:"jsonp",
                success:function(result){
                    console.log(result);
                    // 创建一个table对象
                    var table = $("<table border='1px'></table>");
                    
                    var tr = "<tr><td>账户</td><td>类型</td><td>金额</td><td>备注</td></tr>";
                    table.append(tr);
                    
                    // 循环得到后台返回的数据
                    for(var i = 0; i < result.length; i++){
                        var tr2 = "<tr><td>"+result[i].accountName+"</td><td>"+result[i].accountType+"</td><td>"+result[i].money+"</td><td>"+result[i].remark+"</td></tr>";
                        table.append(tr2);
                    }
                    
                    // 将table追加到页面中
                    $("body").append(table);
                }
            });

    Jquery中的$.get()使用细则

    <script type="text/javascript">
            /**
             * $.get请求  
             *     发送请求方式是get方式
             *     格式:$.get("请求的路径","请求参数","回调函数")
             */
            /**
             * 直接发送请求,忽略返回值
             */
            $.get("js/data.json");
            
            /**
             * 发送请求,传递参数,忽略返回值
             */
            $.get("js/data.json",{"uname":"zhangsan"});
            
            /**
             * 发送请求,无参数,有返回值
             */
            $.get("js/data.json",function(data){
                console.log(data);
            });
            
            /**
             * 发送请求,传递参数,有返回值
             */
            $.get("js/data.json",{"uname":"zhang"},function(data){
                console.log(data);
            });
            
            /**
             * 发送请求给远程服务器
             *     跨域问题需要设置jsonp
             */
            $.get("http://localhost:8080/xwc/account",function(data){
                console.log(data);
            },"jsonp");
        </script>

    Jquery中的post

    <script type="text/javascript">
            /**
             * $.post
             *     发送的请求方式是post方式
             *     如果出现跨域问题,需要在回调函数之后设置jsonp
             */
            $.post("http://localhost:8080/xwc/account",{},function(data){
                console.log(data);
            },"jsonp");
     /**
       * $.getJSON:返回接收的数据是json格式
       */
      $.getJSON("js/data.json",{},function(data){
       console.log(data);
      });
    </script>

      

  • 相关阅读:
    日志服务器 03-部署日志服务器(网络设备部分)
    日志服务器 02-部署日志服务器(主机部分)
    日志服务器 01-Linux日志系统syslog
    nyoj--523--亡命逃窜(BFS水题)
    hdoj--3488--Tour(KM)
    hdoj--1533--Going Home(KM)
    hdoj--2255--奔小康赚大钱(KM算法模板)
    LightOJ--1152--Hiding Gold(二分图奇偶建图)(好题)
    hdoj--5093--Battle ships(二分图经典建图)
    LightOJ--1149--Factors and Multiples(二分图好题)
  • 原文地址:https://www.cnblogs.com/yxmgg/p/9124227.html
Copyright © 2011-2022 走看看