小程序

1、页面跳转方式

概念:超链接标签的作用是从一个页面跳转到另一个页面,a是anchor的缩写,意为:锚。在本网站内的页面称为内部链接

外部链接属性:

href:必须要写的属性,用于指定链接目标的地址

target:用于指定链接页面的打开方式,_self是默认值,_blank为在新窗口中打开

在当前窗口打开:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <h4>外部链接</h4>
        <a href="https://www.baidu.com/" target="_self">百度</a>
    </body>
</html>

通过外部链接,链接到百度首页:

小程序

点击链接之后,百度首页在当前窗口打开:

小程序 

在新窗口打开:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <h4>外部链接</h4>
        <a href="https://www.baidu.com/" target="_blank">百度</a>
    </body>
</html>

小程序

 点击超链接之后,页面在新的窗口打开:

小程序

默认是在当前窗口打开。

 

(2)提交表单实现页面跳转

定义收集用户信息的表单:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <form action="login.html">
            <input type="text" name="username" />
            <input type="submit" />
        </form>
    </body>
</html>

定义接收数据的页面:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <h5>你好</h5>
    </body>
</html>

点击提交后,跳转到第二个页面:

小程序

 

 

 进入第二个页面:

小程序

 

 

 

(3)js方式

页面一:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
      <script>
           function test(){
               window.location.href=‘test.html‘;
          }    
      </script>
    </head>
    <body>
        <h4>页面一</h4>
    <form action="test.html">
        <input type="text" name="username" />
        <input type="submit" value="提交" />
    </form>
    </body>
</html>

页面二:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
       <script>
           function test(){
               javascript:history.go(-1);
          }    
      </script>
    </head>
    <body>
        <h4>页面二</h4>
        <button onclick="test()">返回</button>
    </body>
</html>

点击提交:

小程序

 

 进入页面二后,点击返回,可以重新回到页面一:

小程序

 

 2、ajax请求数据

(1)GET方式:

书写页面,向服务器发起ajax请求:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
     账号:<input type="text" name="user" id="user">
    <br>
    密码:<input type="password" name="password" id="password">
    <br>
    <button id="btn">登录</button>
    <span id="sp1"></span>
    <script>
        var user=document.getElementById("user")
        var password=document.getElementById("password")
        var btn=document.getElementById("btn")
        var sp1=document.getElementById("sp1")
        btn.onclick=function(){
            var xhr=new XMLHttpRequest();
            xhr.open("get","phpinfo.php?user="+user.value+"&password="+password.value,true)
            xhr.send();
            xhr.onreadystatechange=function(){
                if(xhr.readyState==4&&xhr.status==200)
                console.log(xhr.responseText)
                sp1.innerHTML=xhr.responseText;
            }
        }
    </script>
</body>
</html>

书写php,模拟服务器,向html页面返回数据。

<?php 
header("Content-type:text/html;charset=utf-8");//字符编码设置 
$user=$_REQUEST["user"];
$password=$_REQUEST["password"];
echo "{$user},欢迎你,你的密码是{$password}"
?>

(2)post方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
     账号:<input type="text" name="user" id="user">
    <br>
    密码:<input type="password" name="password" id="password">
    <br>
    <button id="btn">登录</button>
    <span id="sp1"></span>
    <script>
        var user=document.getElementById("user")
        var password=document.getElementById("password")
        var btn=document.getElementById("btn")
        var sp1=document.getElementById("sp1")
        btn.onclick=function(){
            var xhr=new XMLHttpRequest();
            xhr.open(‘POST‘,‘phpinfo.php‘,true)
             xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            xhr.send(‘user=‘+user.value+‘&password=‘+password.value);
            xhr.onreadystatechange=function(){
                if(xhr.readyState==4&&xhr.status==200)
                console.log(xhr.responseText)
                sp1.innerHTML=xhr.responseText;
            }
        }
    </script>
</body>
</html>

(3)get方式与post方式的比较

不同点:

(1)get请求的参数在URL中,post请求在请求体中。用户一般看不到请求体中的内容,post提交相对安全

(2)请求缓存:GET 会被缓存,而post不会

post不管刷新页面多少次,都不会304状态。而get在未改变代码的情况下,第一次刷新为状态码为200,第二次刷新状态码变为304。

(3)get请求长度最多1024kb,post对请求数据没有限制(浏览器和服务器对其有一定的限制)

(4)ajax的get方式的请求不需要设置请求头,而post方式需要

相同点:

GET和POST本质上都是TCP连接,但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中表现出不同。 

 

3、HTTP

(1)http响应和http请求通称为http协议

小程序

 

 

 点击链接、提交表单都会触发http请求,这种方式会导致页面重载,速度较慢

(2)响应行常见状态码

200 :请求成功。

302 :请求重定向。

当访问网址A时,由于网址A服务器端的拦截器或者其他后端代码处理的原因,会被重定向到网址B。

304 :请求资源没有改变,访问本地缓存。

小程序

没有被修改,直接用缓存资源,可以减小开销

 

小程序

修改后重新加载

 

403:表明请求访问的资源被拒绝了

404 :请求资源不存在。通常是用户路径编写错误,也可能是服务器资源已删除。

500 :服务器内部错误。通常程序抛异常

 

4、ajax获取数据库数据

 (1)书写页面,通过AJAX向服务端发起POST请求,获取服务端的数据,将其转换为js对象后进行遍历渲染在页面上:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
     
</head>
<body>
    <button id="btn">获取数据</button>
    <div id="sp1"></div>
    <script>
        var btn=document.getElementById("btn")
        var sp1=document.getElementById("sp1")
        btn.onclick=function(){
            var xhr=new XMLHttpRequest();
            xhr.open("POST",‘phpinfo.php‘,true)
            xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            xhr.send();
            xhr.onreadystatechange=function(){
                if(xhr.readyState==4&&xhr.status==200)   
                var data=JSON.parse(xhr.responseText);
                var html="";
                for(var a in data) { 
                    html+=`
                    <tr>                        
                        <td>${data[a].Id}</td>
                        <td>${data[a].sname}</td>
                        <td>${data[a].sex}</td>
                        <td>${data[a].snum}</td>
                        <td>${data[a].hobby}</td>
                    </tr>`
                  } 
                 sp1.innerHTML=html; 
            }
            
        }
    </script>
   
</body>
</html>

(2)PHP:创建并获取数据库连接,访问数据库,从数据库获取数据:

<?php 
header("Content-type:text/html;charset=utf-8");//字符编码设置 
$servername = "localhost"; 
$username = "root"; 
$password = "root"; 
$dbname = "student"; 
 
$con =mysqli_connect($servername, $username, $password, $dbname); 

$sql = "SELECT * FROM t_stu"; 
$result = mysqli_query($con,$sql); 
if (!$result) {
    printf("Error: %s\n", mysqli_error($con));
    exit();
}
 
$jarr = array();
while ($rows=mysqli_fetch_array($result,MYSQL_ASSOC)){
    $count=count($rows);//不能在循环语句中,由于每次删除 row数组长度都减小 
    for($i=0;$i<$count;$i++){ 
        unset($rows[$i]);//删除冗余数据 
    }
    array_push($jarr,$rows);
}
echo $str=json_encode($jarr);//将数组进行json编码
?>

(3)创建数据库,存储数据:

小程序

 

 (4)测试

小程序

 

 

5、

小程序

上一篇:微信小程序开发--云开发--获取openid


下一篇:java 8 中lambda表达式学习