Ajax次要用于申请服务器的数据
History次要用于更新浏览器Url

思路

1、通过Ajax申请服务器的数据,渲染到页面
2、通过History扭转浏览器的Url

整个过程就无需刷新页面,然而浏览器地址产生了扭转,并且页面内容也产生了扭转。

index.html

<!DOCTYPE html><html><head>    <title>AJAX+HISTORY无刷新网页</title>    <meta charset="utf-8">    <link rel="stylesheet" type="text/css" href="./css/index.css"></head><body>    <!-- 整体容器 -->    <div id="content">        <!-- 左侧容器 -->        <div class="left">            <!-- 无序列表 -->            <ul>                <li onclick="getdata(this)" id="安卓">安卓软件</li>                <li onclick="getdata(this)" id="ios">iOS软件</li>                <li onclick="getdata(this)" id="破解">破解软件</li>                <li onclick="getdata(this)" id="微信">微信相干</li>                <li onclick="getdata(this)" id="百度网盘">百度网盘</li>                <li onclick="getdata(this)" id="虚拟主机">虚拟主机</li>                <li onclick="getdata(this)" id="多开">微信多开</li>                <li onclick="getdata(this)" id="文库">百度文库</li>                <li onclick="getdata(this)" id="office">OFFICE</li>                <li onclick="getdata(this)" id="小程序">小程序</li>            </ul>        </div>        <!-- 右侧容器 -->        <div class="right">            <ul></ul>        </div>    </div></body><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script><script type="text/javascript">    //对以后点击对象(通道号按钮)更换css款式    $(document).ready(function(){        $('#content .left ul li').click(function(){            $(this).siblings().removeClass('select_background');            $(this).addClass('select_background');        })    });    // AJAX加载数据    function getdata(event){        $.ajax({            type:"get",          url:'getdata.php?kw='+event.id,          dataType:"json",            success:function(data){                if (data.code == 201) {                    $('#content .right ul').css("opacity","1"); // 把透明度复原                    $('#content .right ul').html(data.msg);                }else{                    window.history.pushState('', '', '?kw='+event.id); // 不刷新更新浏览器url                    $('#content .right ul').empty(); // 避免append反复加载                    $('#content .right ul').css("opacity","1"); // 把透明度复原                    for (var a in data){                        $('#content .right ul').append("<li><div class=\"logo\"><img src=\""+data[a].imgurl+"\"></div><div class=\"info\"><div class=\"title\">"+data[a].resname+"</div><div class=\"data\">查看 120 评论 0  2020-10-20</div></div></li>");                    }                }            },            error:function(data){                alert("777")            },            beforeSend:function(data){                // 在数据还没加载实现的时候,批改整个div的透明度,达到一个过渡成果                $('#content .right ul').css("opacity","0.3");            }        })    }</script></html>

getdata.php

<?phpheader("Content-type:application/json");$kw = trim($_GET["kw"]);//判断是否为空if ($kw == "") {    $results = array(        "code" => 201,        "msg" => "参数谬误"    );}else{    $host = "数据库服务器地址";    $user = "数据库账号";    $pwd  = "数据库明码";    $db   = "数据库名";    // 连贯数据库    $con = mysql_connect($host,$user,$pwd);    if (!$con){        die('Could not connect: ' . mysql_error());    }    mysql_select_db($db, $con);    mysql_query("SET NAMES UTF8");    //验证kw    $kw_result = mysql_query("SELECT id,resname,resint,imgurl FROM reslist WHERE resname LIKE '%$kw%' ORDER BY ID DESC");    $results = array();    $kw_exits = mysql_num_rows($kw_result);    if ($kw_exits) {        //资源存在,遍历数据        while ($data_row = mysql_fetch_assoc($kw_result)) {            $results[] = $data_row;        }    }else{        //资源不存在        $results = array(            "code" => 201,            "msg" => "不存在此资源"        );    }}//断开连接mysql_close();// 输入echo json_encode($results);?>

index.css

*{    margin:0;    padding:0;    list-style: none;}html {  overflow-y: scroll;}body{    background: #FAFAFA;}#content{    width: 1000px;    height: 800px;    margin: 30px auto 0;    /*background: #ccc;*/}#content .left{    width: 250px;    height: 800px;    background: #fff;    float: left;    border:1px solid #eee;}#content .left ul li{    width: 100%;    height: 45px;    line-height: 45px;    font-size: 14px;    text-indent: 15px;}#content .left ul li:hover{    background: #eee;    cursor: pointer;}/*左侧导航抉择后的款式*/.select_background{    background: #eee;    color: #333;}#content .right{    width: 740px;    height: 800px;    /*background: #fff;*/    float: right;}#content .right ul li{    width: 100%;    height: 80px;    background: #fff;    margin-bottom: 15px;    border:1px solid #eee;}#content .right ul li .logo{    width: 80px;    height: 80px;    float: left;}#content .right ul li .logo img{    width: 60px;    height: 60px;    margin:10px 10px;    border-radius: 100px;    overflow: hidden;}#content .right ul li .info{    width: calc(100% - 80px);    height: 80px;    float: right;}#content .right ul li .info .title{    width: 100%;    height: 40px;    line-height: 60px;    font-size: 16px;    color: #333;}#content .right ul li .info .data{    width: 100%;    height: 40px;    line-height: 30px;    font-size: 13px;    color: #999;}

演示

Author:TANKING
Web:http://www.likeyun.cn/
Date:2020-10-21
WeChat:face6009