zoukankan      html  css  js  c++  java
  • JQuery(三)-- AJAX的深入理解以及JQuery的使用

    HTTP

    HTTP

    http: 超文本传输协议。特点:  简单、快速、灵活、无状态、无连接

    URL: 统一资源定位符。

    组成:协议名://主机IP:端口号/项目资源地址?传递参数的键值对#锚点

      ①ip地址在同一个网段是唯一的。如果是在公网中,整个公网的ip是唯一的。

      ②端口号默认是:80,可以省略不写。常见的端口号:8080---tomcat,80---Apache

      ③本机IP: localhost 或者     127.0.0.1

    常见的状态码:

        1XX:信息状态码
            100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息

        2XX:成功状态码
            200 OK 正常返回信息
            201 Created 请求成功并且服务器创建了新的资源
            202 Accepted 服务器已接受请求,但尚未处理

        3XX:重定向
            301 Moved Permanently 请求的网页已永久移动到新位置。
            302 Found 临时性重定向。
            303 See Other 临时性重定向,且总是使用 GET 请求新的 URI。
            304 Not Modified 自从上次请求后,请求的网页未修改过。

        4XX:客户端错误
            400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
            401 Unauthorized 请求未授权。
            403 Forbidden 禁止访问。
            404 Not Found 找不到如何与 URI 相匹配的资源。

        5XX: 服务器错误
            500 Internal Server Error 最常见的服务器端错误。
            503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。

    JSON对象和JS字符串

    1.JSON对象:  JSON对象就是键值对的集合,键与值之间用冒号分隔,多对键值对之间用逗号分隔。

      注意:JSON对象,要求键必须是双引号包裹的字符串。用单引号无效。

    2.JSON字符串:将JSON对象,用字符串的形式进行包裹。

    3.JSON对象与JSON字符串的互相转换。

      ①对象 --> 字符串:JSON.stringify();

      ②字符串 --> 对象:JSON.parse();       

      JQuery也提供了字符串转对象的方法:$.parseJSON();

     1                                 var jsonObj = {
     2                                     "name" : "zhangsan",
     3                                     "age" : "12",
     4                                     "sex" : "男"
     5                                 };
     6                                 
     7                                 //JSON字符串
     8                                 var jsonObj1 = '{"name" : "zhangsan","age" : "12","sex" : "男"}';
     9                                 
    10                                 var jsonObj2 = "{"name" : "zhangsan","age" : "12","sex" : "男"}";
    11                                 
    12                                 //JS中将JSON字符串转化成JSON对象
    13                                 console.log(JSON.parse(jsonObj1));
    14                                 
    15                                 //JS中将JSON对象转化成JSON字符串
    16                                 console.log(JSON.stringify(jsonObj));
    17                                 
    18                                 //JQuery中将JSON字符串转化成JSON对象
    19                                 console.log($.parseJSON(jsonObj2));

    4.JSON数组:将多个JSON对象组成数组的形式存放,称为JSON数组。

      JSON数组可以和JSON对象相互嵌套,也就是说JSON对象的值可以是JSON数组。

     1                                 var jsonArr = [
     2                                     {
     3                                         "name":"zhangsan",
     4                                         "hobby":[{"0":"0"},{"1":"1"}]
     5                                     },
     6                                     {
     7                                         "name":"zhangsan",
     8                                         "hobby":[{"0":"0"},{"1":"1"}]
     9                                     },
    10                                     {
    11                                         "name":"zhangsan",
    12                                         "hobby":[{"0":"0"},{"1":"1"}]
    13                                     }
    14                                 ];

    AJAX

      AJAX:Asynchronous Javascript And XML(异步的Javascript和XML)。

      AJAX是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

    Ajax应用场景:

      场景1 数据验证

      场景2 按需取数据

      场景3 自动更新页面

      JQuery对Ajax操作进行了封装,在jQuery中$.ajax()方法属于最底层的方法,第2层是load()、$.get()和$.post()方法,第3层就是$.getScript()和$.getJSON()方法。

      1、load()方法:载入HTML文档

        load()方法是jQuery中最为简单和常用的Ajax方法,能载入远程HTML代码并插入DOM中。它的结构为:load(url[,data][,callback]);

    参数名称 类型 说明
    url String 请求HTML页面的URL地址
    data(可选) Object 发送至服务器的key/value数据,JSON字符串
    callback(可选) Function 请求完成时的回调函数,无论请求成功还是失败,加载完成后会执行函数
    load()方法的传递方式根据参数data来自动指定。如果没有参数传递,则采用GET方式传递;反之则会自动转换为POST方式。
     
    2、$.ajax(): 是JQuery中最底层的Ajax函数。参数接受一个大对象,用参数的键值对表示ajax请求的相关设置:
            type:表示ajax请求的方法,可以是get和post。
            url:表示请求的后台URL地址。
            success:表示请求成功的回调函数。回调函数接收三个参数:参数1--请求成功接受的数据。
            error:当请求失败时,执行的回调函数。
            complete:请求完成后,无论成功还是失败都会执行的函数。
            statusCode:接收一个对象,对象的键是各种状态码,对象的值表示每种状态码对应的回调函数。
            async:设为true为异步,false为同步。默认是true
            data:请求时,向后台传递的数据,是一个对象类型,以键值对的形式分别表示name:value
            dataType:预期返回的数据类型格式。常见的有JSON/text/html
            timeout:设置请求超时时间。    
    注意:使用数据时,需要注意返回的数据是JSON字符串还是JSON对象。
     
    方法 作用
    url 请求的地址
    type 请求的方式
    dataType 告诉jQuery,需要按照什么格式对服务器返回的数据进行解析,默认json。
    async 设为true表示异步请求,设为false表示同步请求。默认为true
    data 往后台传递的数据
    success 请求成功的回调函数,返回data数据
    error 请求失败的回调函数
    beforeSend 请求发送之前调用的函数
    complete 不论请求是成功还是失败的,只要请求完成就会调用
    statusCode 接收一个对象,对象的键是各种状态码,对象的值表示每种状态码对应的回调函数。
    timeout 设置请求超时时间
     1                                 $.ajax({
     2                                     type:"get",
     3                                     url:"java1801.json",
     4                                     async:true,
     5                                     dataType:"json",
     6                                     data:{"name":"张三","age":12},
     7                                     success:function(data,textStatus,jqXRM){
     8                                         console.log(data);
     9                                         console.log(textStatus);
    10                                         console.log(jqXRM);
    11                                         console.log(jqXRM.responseText);
    12                                         console.log(jqXRM.responseJSON);
    13                                     },
    14                                     error:function(XMLHttpRequest, textStatus, thrownError){
    15                                         console.log(XMLHttpRequest);
    16                                         console.log(textStatus);
    17                                         console.log(thrownError);
    18                                     },
    19                                     complete:function(XMLHttpRequest, textStatus){
    20                                         console.log(XMLHttpRequest);
    21                                         console.log(textStatus);
    22                                     },
    23                                     statusCode:{
    24                                         200:function(){
    25                                             console.log("请求成功");
    26                                         },
    27                                         404:function(){
    28                                             console.log("请求失败");
    29                                         }
    30                                     },
    31                                     timeout:200
    32                                 });

    [JS中的同源策略]
      在JS中,当请求其他文件时,要求被请求文件与当前文件必须处于同一主机名,同一个协议名,同一个端口号下,否则请求将不能成功,如果要请求非同源文件,必须进行跨域请求设置。

    3.如果需要向服务器传递参数的话,可以使用$.get()方法和$.post()方法还有后面的$.ajax方法。

      $.get()/$.post():在$.ajax()的基础上,进行封装,默认使用get请求。

      接收4个参数:
          (1)请求的后台Url
          (2)传递给后台的数据,对象类型,相当于ajax中的data属性。
          (3)请求成功的回调函数,相当于ajax中的success
          (4)预期返回的数据类型,相当与ajax中的dataType

     $.get()方法/$.post()方法

    参数名称 类型 说明
    url String 请求HTML页面的URL地址
    data(可选) Object 发送至服务器的key/value数据,会作为字符串凭接在url的后面
    callback(可选) Function 请求完成时的回调函数(只有当Response的返回状态是success的时候,才调用该函数)
    type (可选) String 服务器返回内容的格式,包括xml、html、script、json、text、_default
    1                 $.get(
    2                     "java1801.json", {
    3                         "name": "zhangsan"
    4                     },
    5                     function(data) {
    6                         console.log(data);
    7                     },
    8                     "json"
    9                 );

    4.$.getJSON():通过Get的方式,请求JSON数据。

    5.serialize()方法会将表单中所有的内容拼接成key=value&key=value这样的字符串。

                    $("#form input[type='button']:eq(0)").on("click",function(){
                        
                        var str = $("form:eq(0)").serialize();
                        console.log(str);
                        
                    });

    6.serializeArray()方法会将表单中所有的内容拼接成字符数组。

     1                 $("#form input[type='button']:eq(1)").on("click",function(){
     2                     
     3                     var arr = $("form:eq(0)").serializeArray();
     4                     
     5                     var obj = {};
     6                     $.each(arr, function(index,item) {
     7                         var keys = item.name;
     8                         var value = item.value;
     9                         obj[keys] = item.value;
    10                     });
    11                     
    12                     console.log(JSON.stringify(obj));
    13                 });

    使用JQuery插件

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6         
     7         <style type="text/css">
     8             .error{
     9                 color: red;
    10             }
    11         </style>
    12         
    13         <script src="js/jquery-1.10.2.js" type="text/javascript" charset="utf-8"></script>
    14         <script src="js/jquery.validate.js" type="text/javascript" charset="utf-8"></script>
    15         <script src="js/messages_zh.min.js" type="text/javascript" charset="utf-8"></script>
    16         
    17         <script type="text/javascript">
    18             $(function(){
    19                 
    20                 $("form:eq(0)").validate({
    21                     debug:true,//至验证不提交表单
    22                     rules:{//规则
    23                         username:{
    24                             required:true,
    25                             maxlength:16,
    26                             minlength:6
    27                         }
    28                     },
    29                     messages:{//提示信息
    30                         username:{
    31                             required:"必须输入",
    32                             maxlength:"长度不能大于16",
    33                             minlength:"长度不能小于16"
    34                         }
    35                     },
    36                 });
    37                 
    38             })
    39         </script>
    40         
    41     </head>
    42     <body>
    43         
    44         <form id="form">
    45             
    46              用户名:<input type="text" name="username" /><br />
    47             密  码:<input type="password" name="pwd" /><br />
    48             确认密码:<input type="password" name="rpwd" /><br />
    49             邮  箱:<input type="text" name="email" /><br />
    50             
    51             <input type="submit" value="提交"/>
    52         </form>
    53         
    54     </body>
    55 </html>

  • 相关阅读:
    洛谷 P2015 二叉苹果树
    Codeforces 1220D Alex and Julian (数论)
    算法-图(1)Dijkstra求最短路径
    计算机网络-网络层(3)DHCP协议
    计算机网络-网络层(2)NAT协议
    计算机网络-网络层(1)IPv4和IPv6
    计算机网络-网络层(0)网络层综述
    计算机网络-传输层(3)TCP协议与拥堵控制
    计算机网络-传输层(2)流水线协议和滑动窗口协议
    计算机网络-传输层(1)UDP协议
  • 原文地址:https://www.cnblogs.com/JiangLai/p/9026744.html
Copyright © 2011-2022 走看看