Web开发课程实验(一):使用ASP的基本数据交互
实验内容:asp与前端html的基本数据交互。
具体要求:利用windows自带的IIS作服务器,写一个html,再写一个asp,通过两种方式提交数据到asp并展示(html表单submit和ajax提交)。
吐槽一下:笔者基本处于零基础状态,此前只有一点点用nodejs写实验作业的经历,这个东西摸索了半天才做完。在网上搜了不少asp教程看得云里雾里,上来就抛各种名词,看了俩小时没明白最基本的疑问,那就是这个东西整体是长什么样的,在我期望进行的操作中发生了什么事情,笔者认为这是作为小白(暂时的)首先要弄清楚的。当然跟着一个教程慢慢来是肯定会明白的啦,不过最好能让这个“明白”发生在开始的时候。
前置:html, javascript, jQuery。纯前端部分没什么门槛。
0.整体结构
好,先来说一下上面的疑问。
html文件干嘛的?展示出来的实际页面。
asp文件干嘛的?后端脚本,可以生成html。
这个东西它做出来长啥样呢?就俩文件,一个是html,上面是表单,用户可以输入信息然后点上面的提交按钮;一个是asp脚本,它在后端运行,当接收到前端的数据后它就能搓出来(专业一点叫渲染)一个html文件发过去,我们说的所谓asp页面,其实是asp生成的html,这个生成过程是“动态”的,而不是说你在浏览器访问xxx.asp的时候这个页面能实时动态变化,你看到的其实是静态的已经固定的html页面。
咱们在服务器上配置要运行的项目,然后写好的asp相当于一直在后台运行着。
现在用户输入了我们的服务器地址,服务器给他一个默认页面(可以在IIS中设置默认文件),这个就是咱们的register.html。
用户输入了注册信息,然后点了提交。
在服务器上保持运行的asp脚本接到数据了,asp里面的代码运行一下,搓出来一个html发了过去。于是用户那边看到了反馈回来的由asp生成的html。
1.html文件
html的部分懒得细说,不明白的直接去w3school的教程看看,熟悉各种元素就手到擒来了。
稍微说一下head里面js的部分:
- 第7行是引用外部的jQuery.js,不然后面没法用jQuery。
- check_data是校验合法性用的,校验不通过就return一个false回来
- sendinf是提交用的函数,跟button的点击事件绑定,先check_data,通过了再提交
- sendinf_ajax是拿ajax提交,上面的是拿form表单自带的submit方法提交
- ajax不会主动给你跳转,要手动把后端返回的东西拿过来通过document.write覆写当前页面,也就是success里的部分
直接放代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>注册页</title>
<script src="https://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js"></script>
<style>
form {
margin-left: 10px;
margin-top: 10px;
}
</style>
<script>
function check_data() {
let usn = $("#user").val();
let pwd = $("#pwd").val();
if (usn.length>20) {
alert("用户名长度不得超过20");
return false;
}
if (/\W/.test(pwd)) {
alert("密码不得包含字母、数字及下划线以外的字符");
return false;
}
if (pwd.length>16) {
alert("密码长度不得超过16");
return false;
}
if (pwd.length<6) {
alert("密码长度不得小于6");
return false;
}
return true;
}
function sendinf() {
let check = check_data();
if (check == false) return;
$("form").submit();
}
function sendinf_ajax() {
let check = check_data();
if (check == false) return;
$.ajax({
type: "post",
url: "http://localhost:8888/register_action.asp",
data: $("form").serialize(),
success: (res)=>{
document.write(res);
}
});
}
</script>
</head>
<body>
<form action="register_action.asp" method="post" >
<table border="0">
<tr>
<td>用户名:</td>
<td><input type="text" name="username" id="user" placeholder="长度小于20"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password" id="pwd" placeholder="6~16位 字母数字下划线"></td>
</tr>
<tr>
<td>性别:</td>
<td>
<input type="radio" name="sex" value="male">男
<input type="radio" name="sex" value="female">女
</td>
</tr>
<tr>
<td>可用语言:</td>
<td>
<input type="checkbox" name="lang" value="zh">中文
<input type="checkbox" name="lang" value="en">英文
<input type="checkbox" name="lang" value="ru">俄语
<input type="checkbox" name="lang" value="jp">日语
<input type="checkbox" name="lang" value="fr">法语
<input type="checkbox" name="lang" value="de">德语
</td>
</tr>
<tr>
<td>学历:</td>
<td>
<select name="edu">
<option value="小学">小学</option>
<option value="初中">初中</option>
<option value="中专/高中">中专/高中</option>
<option value="专科">专科</option>
<option value="本科">本科</option>
<option value="硕士研究生">硕士研究生</option>
<option value="博士研究生">博士研究生</option>
</select>
</td>
</tr>
<tr>
<td>简介:</td>
<td>
<textarea name="intro" rows="8" cols="50" id="intro"></textarea>
</td>
</tr>
</table>
<button type="button" onclick="sendinf()">表单提交</button>
<br>
<br>
<button type="button" onclick="sendinf_ajax()">AJAX提交</button>
</form>
</body>
</html>
2.asp文件
asp整体写成html的格式,但是其中有一些代码,就是拿<% %>括起来的部分,这些代码运行后生成一个实际返回的html。
Response用来返回html,Request用来接收数据,Request.Form(“xxx”)用来接收表单里名字叫xxx的具体值,不难。
上代码:
<%@ language="javascript" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>注册信息</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
ul {
margin:20px;
padding: 20px;
list-style: disc;
}
</style>
</head>
<body>
<%
Response.Write("<ul>");
Response.Write("<li>username:"+Request.Form("username")+"</li>");
Response.Write("<li>password:"+Request.Form("password")+"</li>");
Response.Write("<li>sex:"+Request.Form("sex")+"</li>");
Response.Write("<li>lang:"+Request.Form("lang")+"</li>");
Response.Write("<li>edu:"+Request.Form("edu")+"</li>");
Response.Write("<li>intro:"+Request.Form("intro")+"</li>");
Response.Write("</ul>");
%>
</body>
</html>
3.IIS设置
这个教程随手一搜全都是,对着做就行。
其实只要指定物理地址(项目在你磁盘里的位置)和端口号就行了,ip不用管,默认在本机127.0.0.1运行。
然后可以设置一下默认文档,把html加进去就行。
设置完,asp就已经开始运行了。
在浏览器地址栏输入127.0.0.1:端口号(比如8888),或者把127.0.0.1换成localhost,一样的,然后就能看到效果了。
4.结语
结构明白了后面都是很好搞的东西。