zoukankan      html  css  js  c++  java
  • Ajax笔记

    Ajax全名 : Asynchronous Javascript and XML (异步的javascript和XML)

    作用:实现数据交互,可以在无页面刷新的情况下,获取资源

    应用:局部刷新、表单的实时验证 

    代码实现:

      1.在html同目录下,保存一个1.txt文件

      2.

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Ajax</title>
    </head>
    <body>
    <input type="button" id="btn" value="按钮"/>
    </body>
    <script>
        oBtn = document.getElementById("btn");
        oBtn.onclick = function () {
            var xhr = new XMLHttpRequest();   //1
            xhr.open('get', '1.txt', true);          //2
            xhr.send();                                     //3
            xhr.onreadystatechange = function () {
                if (xhr.readyState === 4) {             //4
                    if (xhr.status === 200) {            //5
                        alert(xhr.responseText);            //6
                    } else {
                        alert('出错了,error:' + xhr.status);
                    }
                }
            }
        }
    </script>
    </html>                                                                                    

    代码各个部分解析:

      1.创建一个ajax对象XMLHttpRequest,后面调用对象方法

      2.open方法: 参数 (1).打开方式 get、post (2).地址 (3).是否异步异步:阻塞模式,前面的代码不会阻碍后面代码的执行同步:阻塞模式,前面代码会影响后面代码执行

      3.发送请求

      4.onreadystatechange:当状态值改变的时候触发

        readyState:ajax工作状态:
        0    还没有调用open()方法
        1   以调用方法send(),正在发送请求
        2   send()方法完成,已收到全部响应内容
        3   正在解析响应内容
        4   响应内容解析完成,可以在客户端调用了

      5.http状态值,当值为200时,表示请求成功。(http协议)

      6.responseText:返回的内容被存放的这个属性下 字符串形式

       responseXML:返回的内容被存放的这个属性下 XML形式

    open的打开方式:

      get:

        

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <form action="1_get.php">
            <input type="text" name="username"/>
            <input type="text" name="age"/>
            <input type="submit" value="submit"/>
        </form>
    </body>
    </html>
    <?php
    header('content-type:text/html;charset="utf-8"');
    error_reporting(0);
    
    $username = $_GET['username'];
    $age = $_GET['age'];
    
    echo "你的名字:{$username},年龄:{$age}";

          

          1.把数据名称和数据对应的数据值用等号链接,若果有多项数据,后把数据组合,用 & 链接,然后把数据放到url?后面传到指定页面

            数据通过url传递,在php页面更改username和age的数值,刷新,页面也会发生相应改变。

            
          2.因为url长度限制原因,不要通过get方式传递过多的数据。
          3.可以被历史纪录,记录下来
          4.格式:字符串

          5.容易出现的问题:页面的缓存问题,在第二次点击按钮式,不会请求,而会从缓存读取。

             可以在url后面加一个时间戳

    xhr.open('get', '1_get.php?username=&age=30&'+new Date().getTime(), true);

      post: 

        js

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <input type="button" id="btn" value="按钮"/>
    </body>
    <script>
        oBtn = document.getElementById("btn");
        oBtn.onclick = function () {
            var xhr = new XMLHttpRequest();
            xhr.open('post', '1_post.php', true);   //post方式数据放在send()方法,作为参数传递
            xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');   //声明数据发送的编码类型
            xhr.send('username=leo&age=30');
            xhr.onreadystatechange = function () {
                if (xhr.readyState === 4) {
                    if (xhr.status === 200) {
                        alert(xhr.responseText);
                    } else {
                        alert('出错了,error:' + xhr.status);
                    }
                }
            }
        }
    </script>
    </html>

        php

    <?php
    header('content-type:text/html;charset="utf-8"');
    error_reporting(0);
    //$_REQUEST
    $username = $_POST['username'];
    $age = $_POST['age'];
    
    echo "你的名字:{$username},年龄:{$age}";

            

            1.发送的数据形式一样,但是传输方式不一样
            2.理论上无限制
            3.通过请求头发送,理论不会被缓存
            4.格式有很多,无缓存问题

  • 相关阅读:
    适配者模式7(10)
    规范使用线程池与底层原理详解
    Java集合多线程安全
    CAS底层原理与ABA问题
    手写数字识别-小数据集
    深度学习-卷积
    Java并发编程volatile关键字
    朴素贝叶斯-垃圾邮件分类
    K均值算法
    mysql搭建主从复制(一主一从,双主双从)
  • 原文地址:https://www.cnblogs.com/boke1979153515/p/7088574.html
Copyright © 2011-2022 走看看