APPCAN + wampserver 实现简单的个人登录功能

2023-11-14

开发背景:Appcan + wampserver,其中wampserver主要用于提供本地服务器和数据库。

这是软件开发工程这门课中的一个大作业,需要实现:

1)首页(index.html),首页包含:滚动图片,新闻列表和导航栏,首页内容通过Request模块从服务端获取数据显示;

2 ) 登录页面(login.html),实现用户登录,根据学号和密码;(用户未登录时显示)

3 ) 用户信息页面(user.html),显示用户的详细信息和用户的已修的课程信息(课程名、成绩、学分等);(用户已经登录时显示)

4)新闻展示页面(newsdetail.html),显示详细的新闻,新闻数据出入数据库,通过Request模块异步获取;

5)  新闻统计页面(newsstatis.html),通过uexChart插件绘制饼图,显示各类新闻的占比。

6)  设计所需的数据库表,并将表结构导出提交。

这里主要记录一下自己实现过程中使用到的一些东西。

 

一、Appcan

1、页面框架

使用Appcan提供的AppCan页面(IDE:文件->新建->AppCan页面),修改html和js文件。

 

2、重要函数

appcan.ready(function(){
    //大括号中的代码在加载页面前会执行,因此需要在html中展示的数据,可以在这里先加载。
}):
appcan.window.open({
    name:'index', //页面名称,如果data打不开,则新建一个
    data:'index.html', //打开的新页面
    aniID:10 //过场动画
})
appcan.button("#main","ani-act",function(){ //按钮,main是html中按钮的id
        appcan.window.open({
            name:'index',
            data:'index.html',
            aniID:10
        })
    }) //这里实现的是,按后跳转到index.html页面
appcan.request.ajax({
           url : "http://localhost/ConnectUsage.php", //php文件路径
           type : "POST", //传输方式POST/GET
           data : {   //传输数据
               id : id, 
               pwd : pwd
           },
           dataType : 'json', //接收数据格式html/json
           success:function(data,status,xhr){
                //连接成功执行
           },
           error:function(xhr,status,errMessage,msg){
               //连接失败执行
           }
       });

 

3、debug的两种方式:提示框和控制台

(1)提示框

alert("我在这里!"); //也可以输出变量
appcan.window.openToast("账户或密码有误!","3000",5,0);

 (2)控制台:会显示代码的语法错误,通过下列语句将信息打印在控制台中,检查代码错误。

console.log(num);

 

二、Ajax请求

异步服务器调用。只要是在单个Web页面的上下文之内进行服务器调用,而且在加载数据和更新页面的同时,浏览器还允许用户继续互动,就说明这个应用程序是在“使用Ajax”,

在大作业中,主要是在个人登录/新闻展示中用到。个人登录:使用ajax验证账户和密码,正确后返回其他信息并展示在另一个界面中;新闻展示:通过主页点击新闻的label,返回并展示相应的新闻内容。ajax的大概过程如下:

  1. Js文件发出ajax请求,通过ajax中的url访问php文件,并将ajax中的data传送到php文件。
  2. php文件获得数据后,连接数据库,通过sql语句访问数据库并获得所需数据,之后将获得数据整理为json/html格式,echo该数据,传送回js文件。
  3. js文件取得json/html格式的数据,整理后,展示在html中,或是存储到本地,用于其他用途。

以登录为例:

1、新建AppCan中的登录页面(见上文),在login.html中获得用户的输入(在appcan页面模板基础上,增加id值)

<input placeholder="学号" id="uid" type="text" class="ub-f1" name="uid">
<input placeholder="密码" id="pwd" type="password" class="umw4 ub-f1" name="pwd">
<div class="button ub ub-ac bc-text-head ub-pc bc-btn uc-a1" id="submit">
登录
</div>

2、login.js中执行ajax:连接php -> 传数据给php -> 接收php传回的数据 -> 将数据存储在本地

# 这里我是用的wampserver,并且将php文件放在www文件下,因此url路径是“http://localhost/ConnectUsage.php”,可以理解为http://localhost指到www文件。

appcan.button("#submit", "ani-act", function() { //按后执行login函数
       login();
    })

function login(){  //login函数
        /*获得html中用户输入的值*/
        var id = $("#uid").val(); 
        var pwd = $("#pwd").val();
        var name = "";
        var sex = "";
        var num = 0;
        
        /*格式判断*/
        if(id == ""){ 
            appcan.window.openToast('账号不能为空','2000');
            return;
        }
        if(pwd == ""){
            appcan.window.openToast('密码不能为空','2000');
            return;
        }
       
        /*ajax请求*/
       appcan.request.ajax({ 
           url : "http://localhost/ConnectUsage.php", //要访问的php文件地址
           type : "POST", //POST和GET都可以,要与php文件保持一致,POST传输数据更大
           data : { //传输的数据
               id : id, 
               pwd : pwd
           },
           dataType : 'json', //包括json/html格式,要与php文件保持一致
           success:function(data,status,xhr){ //访问成功则执行
               if(data.type == "1"){ //账号密码正确
                  name = data.name;
                  sex = data.sex; 
                  num = data.number;
                  var score = data.score;
                  
                  /*将获取到的数据值进行本地存储,这样其他网页就可以通过appcan.locStorage.getval("xx");获得数据*/
                  appcan.locStorage.setVal("name",name);
                  appcan.locStorage.setVal("sex",sex);
                  appcan.locStorage.setVal("score",score);
                  appcan.locStorage.setVal("num",num);
                  appcan.locStorage.setVal("type",data.type);
                  appcan.window.open({ //跳转到数据展示页面
                      name:'user',
                      data:'user.html',
                      aniID:10
                  })
                  
               }
               else{  //账号密码错误
                   appcan.window.openToast("账户或密码有误!","3000",5,0);
               }
               
           },
           error:function(xhr,status,errMessage,msg){ //访问失败则执行
               appcan.window.openToast("登录失败","3000",5,0);
           }
           
       });
    }

3、在wampserver的www文件下,建立php文件。ConnectUsage.php中接收json传过来的数据,连接数据库,访问并返回相应的值。

这里我访问了数据库中的两张表,一张是usage,包括用户名、用户密码等;一张是score,包括用户名、课程名、成绩等。

# 将数据以键值的形式存为array格式,然后用json_encode()函数将数据转换为json格式传输

<?php
	$username = $_POST['id']; //接收数据,如果ajax中是GET,则这里应是_GET
	$password = $_POST['pwd'];
	
    /*连接数据库*/
	$conn = mysqli_connect("localhost",
						"账户名",
						"账户密码",
						"数据库名");
	
	$sql = "SELECT * FROM `usage` WHERE `id` LIKE '$username' AND `pwd` LIKE '$password'"; 
	$res = mysqli_query($conn, $sql); 
	
	$data = array();
	
	if(!isset($res->lengths)) //账号密码符合
	{
		$sql2 = "SELECT * FROM `score` WHERE `id` LIKE '$username'";
		$res2 = mysqli_query($conn, $sql2);
		$data['score'] = array();
		$num = 0;
		while($row = mysqli_fetch_assoc($res2)){
			$num++;
			$data['score'][] = $row;
		}
		$row = mysqli_fetch_assoc($res);
		$data['name'] = $row['name'];
		$data['sex'] = $row['sex'];
		$data['type'] = 1; //标记为1,js通过该返回值判断账号密码适合
		$data['number'] = $num;
	}
	else{ //账号密码不符合
		$data['type'] = 0; //标记为0
	}

	echo json_encode($data); //将数据编码为json格式,并传回js文件
	
	mysqli_close($conn);
?>

4、使用wampserver的phpAdmin建立相应数据库、数据表,并录入要使用的数据。

 

三、数据展示

通过ajax获得的数据,可以通过appcan.locStorage.setVal()和appcan.locStorage.getVal()在页面之间进行传递。

html中的普通显示,title是html中展示位置的id

<div class="uinn-a6 t-gra4 ulev-app3" id="title"></div>
var name = appcan.locStorage.getVal("name",name);
var sex = appcan.locStorage.getVal("sex",sex);
var str = "姓名: " + name + "\t\t" + " 性别: " + sex;
$("#title").html(str);

表格形式显示

<table id = "score" cellpadding="0" style="table-layout: fixed;" border="1" width="100%" cellspacing="0" cellpadding="2">
    <tr>
        <th scope="col">课程</th>
        <th scope="col">学分</th>
        <th scope="col">成绩</th>
    </tr>
</table>
var str2 = "";
str2 += "<tr><td>" + "课程" + "</td><td>" + "学分" + "</td><td>" + "成绩" + "</td></tr>";
for(var i = 0; i < num; i++)
{
    str2 += "<tr><td>" + score[i].course + "</td><td>" + score[i].credit + "</td><td>" + score[i].score + "</td></tr>";
}
$("#score").html(str2);

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

APPCAN + wampserver 实现简单的个人登录功能 的相关文章

  • 将查询字符串添加到 Ajax url 调用

    我想知道当我们调用 Jquery Ajax 时是否可以将查询字符串与 URL 一起传递 例子 ajax type POST url index php task addNewInfo data regForm serialize dataT
  • 回到使用 ajax 的 PushState 条目

    我对以下情况有疑问 用户访问网站 用户点击使用history pushState的链接来更新url 通过ajax加载部分页面内容 使用jQuery 用户单击加载新页面的常规链接 用户点击返回返回到pushState条目 该页面现在仅显示通过
  • Ajax文件上传

    我想使用 Ajax 和 php 上传文件 我有一个表格
  • jQuery / Ajax:如何循环遍历数组作为 Ajax 成功函数的一部分

    我有一个阿贾克斯调用返回一个数组并需要对该数组中的每个值执行某些操作 到目前为止 我有以下内容 但这会返回以下错误 Uncaught TypeError Cannot use in operator to search for length
  • ASP.net Gridview 分页在 UpdatePanel 中不起作用

    虽然类似的问题已经被问过很多次了 但问题仍然没有解决 这是问题 我有一个GridView它包含在选项卡容器中AJAX控件本身位于UpdatePanel Gridview工作得很好并且其相应的方法被准确地触发 但是当我启用paging 例如
  • 在 ajax 完成之前阻止提交

    我正在使用 jQuery 并且我希望在所有 ajax 调用完成之前表单提交不会起作用 我想到的一种方法是存储一个布尔值 该值指示是否有 ajax 请求正在进行 在每一个结束时它都会被设置为 false 我不确定这是否是最好的方法 所以我将不
  • Yii2:对 ajax 提交的表单进行 ajax 表单验证

    我想知道是否有 Yii2 专家可以帮助我了解如何最好地结合使用 ajax 表单和 Yii ajax 验证 我想我可以解释这个问题 而无需向您介绍我的所有代码 我正在制作一个促销代码输入表单 用户在表单中输入促销代码 该表单通过 ajax 提
  • 是否可以禁用特定 jQuery Ajax 调用的 Turbolinks 以防止页面刷新和滚动?

    我有一个 Rails 5 应用程序 非常想使用 Turbolinks 在应用程序中 有几个 PATCH ajax 调用 它们只是用新数据更新服务器 但不需要担心更新页面的状态 每当这些 ajax 请求返回时 Turbolinks 就会刷新页
  • Laravel 使用 Ajax 上传文件

    我正在使用 Laravel 框架 我有一种向数据库添加新项目的形式 在该形式中用户还可以拖放文件 然后 会显示一个进度条 直到完成为止 使用 Ajax 将文件上传到服务器 提交该表格后 我运行addItem在控制器中运行 我想要执行 检查
  • 无法让基本的 pjax 示例工作

    编辑 非 工作示例在这里 http www jogos mmorpg com pjax html http www jogos mmorpg com pjax html 我正在尝试重现一个非常基本的 PJAX 示例 如自述文件中所述 htt
  • AJAX 是如何工作的?

    AJAX的本质是什么 例如 我想在我的页面上有一个链接 这样当用户单击此链接时 一些信息就会发送到我的服务器 而无需重新加载当前页面 那是阿贾克斯吗 我能够通过使用 isoframe 来实现这种行为 更详细地说 我在一个小 isoframe
  • 如何在提交表单时调用 jquery 函数?

    我有一个表格如下
  • 使用 Jquery Ajax 将数据从 jsp 发送到 struts2 操作类

    我需要使用 jquery Ajax 将表单数据从 jsp 传递到 struts2 并从 Struts2 操作类接收回 JSON 数据 我已经给出了下面的代码 当我传递 AJAX 数据时 url search action searchTex
  • 如果验证失败,如何在 ASP.NET MVC 中阻止 jquery ajax 提交

    我在用ASP NET 5 MVC RC1 我的 ASP NET MVC 使用的 jquery 验证插件是默认 ASP NET 5 模板项目使用的标准 jquery validate js jQuery Validation Plugin v
  • 在 Javascript 中使用 fetch API 接收和处理 JSON

    在我的项目中 当条件不足时 我的 Django 应用程序会发送带有消息的 JSON 响应 我使用这个 JsonResponse 指令 Code data is taken email email return JsonResponse da
  • Ajax ModalPopup 在 IE8 - IE9 中显示错误

    我在我的aspx web VB NET 中使用ModalPopup AJAX 使用母版页 它在 ie6 Firefox 中工作正常 但是当我使用IE7 IE8 IE9时 当我想打开Modalpopup时 显示不正确 屏幕被放大 当我使用鼠标
  • jquery comet 长轮询和流媒体教程? [复制]

    这个问题在这里已经有答案了 可能的重复 彗星和 jQuery https stackoverflow com questions 136012 comet and jquery 我厌倦了找不到关于 jquery 长轮询 流彗星技术的好的教程
  • 用 Ajax 响应替换 div 的内部 HTML

    我试图在一段时间后更改 div 的内部 HTML 我得到了我想要的 Ajax 正确响应 但无法用 Ajax 响应替换所选内容的内部 HTML 我的代码有什么问题 Html p class time ui li desc 51 seconds
  • Alfresco 更新文件 - 错误帖子

    我正在尝试更新 Alfresco 中的文件 我编写了以下代码 var csrf header Alfresco util CSRFPolicy getHeader var csrf token Alfresco util CSRFPolic
  • 如何从 webmethod 向 AJAX 调用返回异常?

    我回来了List

随机推荐

  • 概率论之 -- 边缘分布

    边缘分布 Marginal Distribution 指在概率论和统计学的多维随机变量中 只包含其中部分变量的概率分布 中文名 边缘分布 外文名 marginal distribution 又 名 边际分布 应用学科 概率论 统计学 定义
  • 还在用夸克?这3款能安装插件的手机浏览器不香吗

    说到浏览器插件 很多人想到的多数是电脑上的玩法 实际上 随着手机浏览器功能越来越完善 很多手机浏览器已经开始支持插件的使用 也就是说 支持安装插件的手机浏览器 不仅能体验如电脑般丝滑强大的功能 而且又不会造成内存过分臃肿 开启响应缓慢的问题
  • GLSL着色器的正确文件扩展名是什么?

    openGL系列文章目录 文章目录 openGL系列文章目录 前言 一 glslangValidator exe工具使用 二 着色器程序后缀名 前言 我正在学习glsl着色 我遇到了不同的文件格式 我见过人们给出他们的顶点和片段着色器 ve
  • Java中在特定区间产生随机数

    原文地址 http blog sina com cn s blog 59aebaa10100ct47 html 参考地址 http blog csdn net codefunjava article details 44408555 htt
  • 贝叶斯分类器-机器学习ML

    参考 1 统计学习方法 李航 2 https baike baidu com item E8 B4 9D E5 8F B6 E6 96 AF E5 88 86 E7 B1 BB E5 99 A8 1739590 fr aladdin 3 h
  • 力扣|错误的集合 C语言

    题目连接 错误的集合 集合 s 包含从 1 到 n 的整数 不幸的是 因为数据错误 导致集合里面某一个数字复制了成了集合里面的另外一个数字的值 导致集合 丢失了一个数字 并且 有一个数字重复 给定一个数组 nums 代表了集合 S 发生错误
  • 浅析muduo库中的定时器设施

    一个设计良好的定时器在服务端的应用程序上至关重要 muduo定时器的实现陈硕大牛在书中已经详细的谈过 笔者尝试从源码的角度解读定时器的实现 如果理解不对 欢迎指正 在muduo的定时器系统中 一共由四个类 Timestamp Timer T
  • 学习CSSGrid布局

    一 重要术语 CSS Grid 网格 布局 又称为 Grid 网格 是一个二维的基于网格的布局系统 它的目标是完全改变我们基于网格的用户界面的布局方式 FlexBox 一维布局 Grid 二维布局 Flexbox 和 Grid 能协同工作
  • C# 文件IO

    文章目录 判断某个文件夹是否存在 获取当前运行程序 exe或dll 所在路径 创建文件夹 移动 剪切 文件夹 复制文件 创建文件 覆盖写文件 方式一 使用FileStream 方式二 使用StreamWriter 追加写文件 读文件 一 一
  • springBoot国际化的一种方式

    引言 当我们的应用面向不同国家用户时 根据不同的locale返回不同的语言信息的国际化功能就显得有必要了 一般来说国际化主要表现在前端用户界面上 在现在前后端分离的背景下 前端页面的国际化交由前端代码独立完成 少部分表现在后端上 后端主要表
  • HTML存储详解

    和大家一起先来了解一下H5之前的存储方式 cookies的诞生 http请求头上带着数据 大小只能为4K 主Domain的污染 下面是百度的一些Cookies HTTP中带 的表示 只能被服务器端修改的数据 一般用来存储身份验证等信息 co
  • 搞清axis的含义,这一篇就够了!

    文章目录 axis的含义 旁门左道式理解 二维数组中的axis 三维数组中的axis 正规理解 axis的含义 在自己分析之前先摆上官方关于多维数组中axis的值的定义 axis 0 表示第一个维度 axis 1 表示第二个维度 axis
  • Java异步调用的几种方式

    一 通过创建新线程 二 通过线程池 三 通过 Async注解 四 通过CompletableFuture 日常开发中 会经常遇到说 前台调服务 然后触发一个比较耗时的异步服务 且不用等异步任务的处理结果就对原服务进行返回 这里就涉及的Jav
  • css3 transaction display,HTML5+CSS3 本地数据库基本

    HTML5 CSS3 本地数据库基本 Web SQL Database 本地数据库 是一个已经废弃的规范 但是鉴于除了IE和Firefox 其他浏览器都已经实现了Web SQL Database 并且它还具有一些Storage 存储 所不具
  • Windows更新CUDA

    经过整整一天的奋战 终于成功更新了CUDA 特此记录一下这个艰难的过程 最最最先要确定的是 你的电脑得是支持GPU的 一 查看电脑现存CUDA版本 电脑搜索NVIDIA 在出现的页面中的左下角点击 系统信息 出现以下界面 可以看到驱动版本是
  • LXC 3.0交叉编译

    LXC交叉编译 代码下载 git clone https github com lxc lxc git 代码文件编译 编写交叉编译文件 host machine system linux cpu family arm cpu arm end
  • redis的持久化和主从复制

    什 么是redis持久化 redis作为一个键值对内存数据库 nosql 数据存储在内存当中 在处理客户端请求时 所有操作都是在内存当中运行 问题 存储在内存中的数据 只要服务器关机 内存中的数据就会消失 不仅服务器关机会造成数据消失 re
  • VMware虚拟机安装Linux系统

    文章目录 前言 一 Linux是什么 二 安装步骤 1 新建虚拟机 2 安装CentOS 7 总结 前言 之前使用VMware虚拟机安装了Windows系统 本文讲的是使用VMware虚拟机安装Linux系统 提示 以下是本篇文章正文内容
  • Modbus通信协议详解

    一 Modbus 协议简介 Modbus 协议是应用于电子控制器上的一种通用语言 通过此协议 控制器相互之间 控制器经由网络 例如以太网 和其它设备之间可以通信 它已经成为一通用工业标准 有了它 不同厂商生产的控制设备可以连成工业网络 进行
  • APPCAN + wampserver 实现简单的个人登录功能

    开发背景 Appcan wampserver 其中wampserver主要用于提供本地服务器和数据库 这是软件开发工程这门课中的一个大作业 需要实现 1 首页 index html 首页包含 滚动图片 新闻列表和导航栏 首页内容通过Requ