Blogger Information
Blog 31
fans 0
comment 0
visits 30255
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
jquery中的Ajax相关事件函数、跨域请求和无刷新分页技术
emy
Original
638 people have browsed it

一、Ajax中相关事件函数、跨域请求等

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script src="lib/jquery-3.5.1.js"></script>
    <title>Ajax</title>
    <style>
      body {
        display: grid;
        gap: 15px;
      }
      button {
        text-align: left;
        height: 26px;
      }
      button:hover {
        background-color: #ddd;
        cursor: pointer;
      }
    </style>
  </head>
  <body>
    <button type="button">1. load()请求数据</button>
    <button type="button">2. $.get()请求数据</button>
    <button type="button">3. $.post()请求数据</button>
    <button type="button">4. $.getJSON()请求JSON数据</button>
    <button type="button">5. $.ajax()请求数据</button>
    <button type="button">6. $.ajax()-jsonp-跨域请求数据1</button>
    <button type="button">7. $.ajax()-jsonp-跨域请求数据2</button>
  </body>
</html>
<script>
  var cl = console.log.bind(console);
  // 1. load(): 加载html片断
  $("button:first-of-type").click(function () {
    $(this).after("<div>").next().load("nav2.html");
  });

  // 2. $.get():以get方式从服务器获取资源/数据
  $("button:nth-of-type(2)").click(function (ev) {
    //    $.get(url, data, callback)
    $.get("users.php", { id: 2 }, function (data) {
      //   cl(data);
      $(ev.target).after("<div>").next().html(data);
    });
  });

  // 3. $.post():以post方式从服务器获取资源/数据
  $("button:nth-of-type(3)").click(function (ev) {
    //    $.post(url, data, callback)
    $.post("users.php", { id: 4 }, function (data) {
      //   cl(data);
      $(ev.target).after("<div>").next().html(data);
    });
  });

  // 4. $.getJSON():接口返回的大多是JSON
  $("button:nth-of-type(4)").click(function (ev) {
    //    $.getJSON(url, data, callback)
    $.getJSON("users.php?id=2", function (data) {
      // 返回就是js对象了, 不必转换
      //   cl(JSON.parse(data));
      cl(data);
      var res = data.id + ": " + data.name + ", " + data.age + "岁";
      $(ev.target).after("<div>").next().html(res);
    });
  });

  // 5. $.ajax(): 终级方法, 实际上大家只需要掌握这一个方法
  //   $.ajax({
  //     // 请求类型
  //     type: "GET",
  //     // 请求的URL
  //     url: url,
  //     // 发送的数据
  //     data: data,
  //     // 期望服务器返回/响应的数据类型
  //     dataType: "json",
  //     // 成功时的回调函数
  //     success: callback,
  //   });

  $("button:nth-of-type(5)").click(function (ev) {
    $.ajax({
      type: "GET",
      url: "users.php",
      data: { id: 10 },
      dataType: "html",
      success: function (data) {
        $(ev.target).after("<div>").next().html(data);
      },
    });
  });

  // "http://php.edu/0522/test2.php?jsonp=handle&id=3";

  // 6. $.ajax()-jsonp-1:跨域请求
  $("button:nth-of-type(6)").click(function (ev) {
    $.ajax({
      type: "GET",
      url: "http://php.edu/0522/test2.php?jsonp=?&id=1",
      dataType: "jsonp",
      success: function (data) {
        cl(data);
        var data = JSON.parse(data);
        cl(data);
        var data =
          "<p>" +
          data.title +
          "</p><p>" +
          data.user.name +
          ", 邮箱:" +
          data.user.email +
          "</p>";
        $(ev.target).after("<div>").next().html(data);
      },
    });
  });

  // 7. $.ajax()-jsonp-2:跨域请求
  $("button:last-of-type").click(function (ev) {
    $.ajax({
      type: "GET",
      url: "http://php.edu/0522/test2.php?jsonp=?&id=2",
      dataType: "jsonp",
      jsonpCallback: "handle",
    });
  });

  function handle(data) {
    cl(data);
    var data = JSON.parse(data);
    cl(data);
    var data =
      "<p>" +
      data.title +
      "</p><p>" +
      data.user.name +
      ", 邮箱:" +
      data.user.email +
      "</p>";
    $("button:last-of-type").after("<div>").next().html(data);
  }
</script>

QQ截图20200607112311.jpg

二、AJAX无刷新分页代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script src="lib/jquery-3.5.1.js"></script>
    <title>Ajax无刷新分页技术</title>
    <style>
      table {
        border-collapse: collapse;
        border: 1px solid;
        text-align: center;
        margin: auto;
        width: 500px;
      }
      table caption {
        font-size: 1.2rem;
        margin-bottom: 10px;
      }
      th,
      td {
        border: 1px solid;
        padding: 5px; text-align: left;
      }
      thead tr:first-of-type {
        background-color: #ddd;
      }
      p {
        text-align: center;
      }

      p a {
        text-decoration: none;
        border: 1px solid;
        padding: 0 8px;
      }

      .active {
        background-color: #ddd;
      }
    </style>
  </head>
  <body>
    <table>  
      <thead>
        <tr>
          <th>id</th>
          <th>标题</th>
          <th>关键词</th>        
        </tr>
      </thead>
      <tbody></tbody>
    </table>
    <!-- 分页条 -->
    <p></p>
  </body> 
  <script>
    // 默认是第1页
    var page = 1;
    // 默认显示第一页,用一个函数来实现显示
    getPageData(page);
    // 分页函数
    function getPageData(page) {
      // ajax无刷新分页
      $.ajax({
        type: "post",
        url: "page_data.php",
        data: { page: page },
        dataType: "json",
        success: show,
      });
    }
    // 数据显示函数
    function show(data) {
      // 1. 显示表格数据
      console.log(data);
      console.log(data.pages);
      console.log(data.staffs);
      var str = "";
  data.article.forEach(function (staff) {
    str += "<tr>";
    str += "<td>" + staff.id + "</td>";
    str += "<td>" + staff.title + "</td>";
    str += "<td>" + staff.keyword + "</td>";
    str += "</tr>";
  });
      //   $("tbody").append(str);
      $("tbody").html(str);
      // 2. 显示分页条
      var str = "";
      for (var i = 1; i <= data.pages; i++) {
        // $("<a>").attr("href", "").attr("data-index", i).html(i).appendTo("p");
        str += '<a href="" data-index=' + i + ">" + i + "</a>";
      }
        // 将页码添到分页条, 并将当前页置为高亮
        $("p")
        .html(str)
        .find("a")
        .eq(page - 1)
        .addClass("active");
      // 分页条的点击事件
      $("p a").click(function (ev) {
        // 禁用<a>的跳转默认行为
        ev.preventDefault();
        page = $(this).attr("data-index");
        $("tbody").html("");
        getPageData(page);
      });
    }
  </script>
</html>

QQ截图20200607133117.jpg

三、总结:这节课了解了jquery实现跨域请求和相关事件函数,对于AJAX无刷新分页的原理基本认识。对于PHP,JS等知识小白的我,坚持完成朱老师交待的作业。有些课自己在直播时,不一定能马上听的明白,通过做作业,还是能掌握一些。能否把学到的PHP知识在后期的工作项目中运用自如,仍有一条很长的路要走。熟能生巧,我现在还差一个熟字。

有缘上完朱老师的课,总体感觉朱老师教学真的很用心。不管是上课的语速和讲解的技巧,都是十分清晰。感谢感恩!


Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:先谢谢你的评论, 这是我的本职工作, 上好课也是应该的
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post