news 2026/5/1 8:50:22

练习(记事本功能)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
练习(记事本功能)

今天我们做一个小玩意,就是一个简单的记事本功能,这里会用到我们之前学到的基本知识的整合,让大家对web软件有一个更深层次的认识。

功能流程如下:

界面有一个文本输入框,一个姓名输入框(模拟不同的人),提交到后台经由php进行处理,并保存到数据库中,界面进行刷新会获取到插入的数据。

我们之前的web数据库中,创建一个notebook数据表,保存用户信息和留言内容:

create table notebook (id int not null primary key auto_increment,username varchar(10) comment "用户名",content text comment "记事本内容");

notebook.html

<html> <head> <title>js</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> </head> <body> <div style="display: flex;"> <div class="left_container" style="width: 50%;"> <div>留言列表:</div> <div class="note_list"></div> </div> <div class="right_container"> <textarea class="note_content" cols="50" rows="10" placeholder="内容"></textarea> <input class="note_username" style="display: block;" placeholder="用户名"> <div> <button class="ajax_btn">提交</button> </div> </div> </div> </body> <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script> <script type="text/javascript" src="./notebook.js"> </script> </html>

notebook.js

$(".ajax_btn").click(function(){ var username = $(".note_username").val(); var content = $(".note_content").val(); var xhr = new XMLHttpRequest(); xhr.open("post","http://localhost/notebook.php",true); xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xhr.onreadystatechange = function(e) { if(xhr.readyState == 4 && xhr.status == 200) { window.location.reload(true); } } var str = "username="+username; str += "&content="+content; xhr.send("act=addInfo&"+str); }); // 获取留言列表 var xhr = new XMLHttpRequest(); xhr.open("post","http://localhost/notebook.php",true); xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xhr.onreadystatechange = function(e) { if(xhr.readyState == 4 && xhr.status == 200) { var list = JSON.parse(xhr.responseText); var listStr = ""; for(var i=0;i<list.length;i++) { var info = list[i]; listStr +="<div><span style='color:red'>"+info.username+"说</span>: "+info.content+"</div>" } $(".note_list").html(listStr); } } xhr.send("act=allInfo"); })

注:我们使用jqeury在这个html加载进来的时候,会向后台发起请求获取已留言的用户信息!当我们点击提交按钮的时候,会把输入的留言内容和模拟的留言用户发送到后台notebook.php文件,收到返回信息后重新刷界面获取最新的列表,你也可以通过更改后台逻辑使用jquery来动态添加数据。

notebook.php

<?php class MySql{ private $hostname = "127.0.0.1"; // 数据库地址 private $username = "root"; // 数据库登录账户 private $password = "root"; // 数据库登录密码 private $conn; public function __construct(){ $this->conn = new mysqli($this->hostname,$this->username,$this->password); if($this->conn->connect_error) { trigger_error("连接失败"); } } public function allInfo($database,$table) { $this->conn->query("use ".$database); $data = $this->conn->query("select * from ".$table); $result = $data->fetch_all(MYSQLI_ASSOC); return $result; } public function addInfo($database,$table,$data) { $this->conn->query("use ".$database); $sql = "insert into ".$table."("; $keyStr = ""; $valueStr = ""; foreach($data as $k=>$v) { $keyStr.=$k.","; $valueStr.="'$v'".","; } $keyStr = substr($keyStr,0,strlen($keyStr)-1); $valueStr = substr($valueStr,0,strlen($valueStr)-1); $sql.=$keyStr.") values (".$valueStr.")"; $state = $this->conn->query($sql); return $sql; } } $mysql = new MySql(); $result = ""; switch($_POST["act"]) { case "addInfo": $info = array("username"=>$_POST["username"],"content"=>$_POST["content"]); $result = $mysql->addInfo("web","notebook",$info); break; case "allInfo": $result = $mysql->allInfo("web","notebook"); break; } print_r(json_encode($result));

注:

在这里我们封装了一个自定义的MySql类,这个类里有两个方法,通过发送过来的act参数判断用户的操作,allInfo 是获取留言列表,addInfo是用来添加留言,通过MySql提供的两个方法来调用插入数据和获取数据。

注:我们写完上面这些代码后,通过在址址栏里输入localhost/notebook.html,这里访问的是html文件,而不是那个php文件。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 11:14:08

WeMod Pro功能免费解锁终极指南:完整教程与使用技巧

想要零成本享受WeMod Pro的全部高级功能吗&#xff1f;这款WeMod解锁工具正是你需要的解决方案。通过本地文件处理技术&#xff0c;无需订阅即可畅享专业级游戏优化体验&#xff0c;让每位玩家都能轻松掌控游戏节奏。 【免费下载链接】Wemod-Patcher WeMod patcher allows you …

作者头像 李华
网站建设 2026/5/1 4:30:07

Klick‘r智能图像识别自动点击器配置指南

Klickr智能图像识别自动点击器配置指南 【免费下载链接】Smart-AutoClicker An open-source auto clicker on images for Android 项目地址: https://gitcode.com/gh_mirrors/smar/Smart-AutoClicker Klickr是一款基于图像识别技术的开源Android自动点击工具&#xff0c…

作者头像 李华
网站建设 2026/4/29 11:39:28

Keil5中文乱码的解决:跨平台文本兼容技巧

如何彻底解决 Keil5 中文乱码问题&#xff1f;一套真正可用的跨平台编码兼容方案在嵌入式开发的世界里&#xff0c;Keil MDK&#xff08;尤其是 μVision5&#xff09;依然是许多基于 ARM Cortex-M 芯片项目的首选工具链。但如果你的团队中有人用中文写注释、变量名或文档说明—…

作者头像 李华
网站建设 2026/4/28 5:22:59

【效能优化】艾尔登法环帧率解锁 3步告别卡顿

【效能优化】艾尔登法环帧率解锁 3步告别卡顿 【免费下载链接】EldenRingFpsUnlockAndMore A small utility to remove frame rate limit, change FOV, add widescreen support and more for Elden Ring 项目地址: https://gitcode.com/gh_mirrors/el/EldenRingFpsUnlockAndM…

作者头像 李华
网站建设 2026/4/14 18:15:17

城通网盘解析终极指南:3步获取高速直连下载的完整教程

城通网盘解析终极指南&#xff1a;3步获取高速直连下载的完整教程 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘的缓慢下载速度而烦恼吗&#xff1f;每天面对几十KB的龟速下载&#xf…

作者头像 李华
网站建设 2026/4/28 18:26:02

大模型开发平台TLM数据合成介绍

大模型开发平台TLM介绍 天纪大模型开发平台整合最新 AI 技术&#xff0c;提供模型广场、数据广场&#xff0c;模型微调、模型部署和模型评测等大模型开发的完整解决方案&#xff0c;为用户提供全套 LLMOPS 工程能力&#xff0c;助力业务快速基于通用模型开发出行业模型并部署服…

作者头像 李华