最近在学些node,按照《nodejs实战》上的代码做练习,发现有表单重复提交的问题

第一次打开页面,显示如图是get请求

  

       图1

现在我们提交aaa,显示如图,post请求

  

      图2

刷新页面,应该显示图1的,结果确实下面这张图,post请求。即使是按ctrl+f5刷新没用,浏览器还是重复提交了上次的内容,显示如图

  

      图3

不断的刷就这样了,求教这个是为什么?

  

      图4

node代码如下

var http=require("http");
var qs = require("querystring");
var items=[];
var server=http.createServer(function(req,res){
console.log("req.url",req.url);
console.log("req.method",req.method);
if("/"==req.url){
switch(req.method){
case "GET":
show(res);
break;
case "POST":
add(req,res);
break;
default:
badRequest(res);
}
}else{
notFound(res);
}
})
server.listen(3000);
function show(res){
var html='<html><head><title>Todo List</title></head><body>'
+'<h1>Todo List</h1>'
+'<ul>'
+items.map(function(item){
return '<li>'+item+'</li>'
}).join('')
+'</ul>'
+'<form method="post" action="/">'
+'<p><input type="text" name="item"/></p>'
+'<p><input type="submit" value="Add Item"/></p>'
+'</form></body></html>';
res.setHeader("Content-Type","text/html");
res.setHeader("Content-Length",Buffer.byteLength(html));
res.end(html);
}
function notFound(res){
res.statusCode=404;
res.setHeader("Content-Type","text/plain");
res.end("notFound");
}
function badRequest(res){
res.statusCode=400;
res.setHeader("Content-Type","text/plain");
res.end("Bad Request");
}
function add(req,res){
var body='';
req.setEncoding("utf-8");
req.on("data",function(chunk){
console.log("chunk",chunk);
body+=chunk;
})
req.on("end",function(){
var obj=qs.parse(body);
items.push(obj.item);
show(res);
})
}

求教——使用node做表单,刷新浏览器页面,浏览器为什么会重复提交上次所填的信息的更多相关文章

  1. node.js表单——formidable/////z

    node.js表单--formidable   node处理表单请求,需要用到formidable包.安装formidable包的命令如下: npm install formidable 安装pack ...

  2. node.js表单——formidable

    node处理表单请求,需要用到formidable包.安装formidable包的命令如下: npm install formidable 安装package的路径分为两种,一种是本地目录,一种是全局 ...

  3. 不用写代码也能做表单 —— 加载meta即可

    做增删改查要写多少代码? 一个表单一套代码,十个表单十套代码吗? 我这么懒,怎么会写这么多代码? 我想做到:即使一百个表单也只需要一套代码(而且不需要复制粘贴).实现多个表单,只需要加载不同的meta ...

  4. [转载]WebBrowser控件表单(form)的自动填写和提交

    话说有了WebBrowser类,终于不用自己手动封装SHDocVw的AxWebBrowser这个ActiveX控件了.这个类如果仅仅作为一个和IE一模一样浏览器,那就太没意思了(还不如直接用IE呢). ...

  5. SharePoint 2013 修改表单认证登录页面

    前 言 之前的博客我们介绍了如何为SharePoint配置表单登陆,但是,登陆页面是丑.很丑.非常丑.特别非常丑!我们现在就介绍一下如何定制SharePoint表单登陆页面! SharePoint 表 ...

  6. SharePoint 2013 改动表单认证登录页面

    前 言 之前的博客我们介绍了怎样为SharePoint配置表单登陆,可是.登陆页面是丑.非常丑.非常丑.特别非常丑! 我们如今就介绍一下怎样定制SharePoint表单登陆页面! SharePoint ...

  7. RookeyFrame Bug 表单管理 -> 查看表单 ->编辑字段页面 JS报错

    表单管理 -> 查看表单 ->编辑字段页面 小bug onchange里面直接就是方法,修改:去掉外面的function(){},直接把方法体写在onchange里面就可以了. 后台方法: ...

  8. bootstrapValidator.js 做表单验证

    有这样的一个场景,我们在提交form表单的时候 可能要做一些验证,比如判断是不是为空,电话的格式验证,邮箱的格式验证等等,手写起来也是可以得. 但是今天我介绍一个bootstrap插件简化开发.就是b ...

  9. node处理表单文件,获取formdata的数据

    参考文章:https://blog.csdn.net/a895458278/article/details/48055143# 应用: formidable使用: 原生的node.js在处理客户端以P ...

随机推荐

  1. 第一零三天上课 PHP TP框架下控制器的方法分离

    (1)配置信息 修改配置文件->Config.php (配置后,原先的控制方法无效) 'ACTION_BIND_CLASS' => TRUE, // 控制器方法分离 (2)在Control ...

  2. exports 和 module.exports 的区别

    https://cnodejs.org/topic/5231a630101e574521e45ef8 //一句话总结:exports是对module.exports的引用,require()返回的是 ...

  3. 往sql数据库表中添加字段

    通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数增加字段: alter table [表名] add 字段名 smallin ...

  4. Allegro转换PADS终极篇(转载)

    Allegro转换PADS终极篇.....http://www.eda365.com/forum.php?mod=viewthread&tid=86947&fromuid=190625 ...

  5. Spring中Aware相关接口原理

    Spring中提供一些Aware相关接口,像是BeanFactoryAware. ApplicationContextAware.ResourceLoaderAware.ServletContextA ...

  6. <a>标签的四种状态

    a:link  a:visited  a:hover   a:active

  7. springMVC + Spring + MyBatis 整合

    整理下SSM(基于注解)的整合 1. web.xml 配置文件 <?xml version="1.0" encoding="UTF-8"?> < ...

  8. 编程:什么是REST

    REST (REpresentation State Transfer) 描述了一个架构样式的网络系统,比如 web 应用程序.它首次出现在 2000 年 Roy Fielding 的博士论文中,他是 ...

  9. 介绍开源的.net通信框架NetworkComms框架 源码分析(十五 ) CommsThreadPool自定义线程池

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  10. ubuntu 12.04禁用笔记本触摸板

    习惯了在Macbook Pro上使用触摸板,装了个linux 的dualboot,发现,ubuntu下对触摸板的支持实在是太烂了,想禁用触摸板却找不到设置的地方. 终于最后发现了——touchpad- ...