Nodejs之http的表单提交
程序员文章站
2022-05-26 09:09:17
之前介绍了http模块的请求与响应的过程,也介绍了tcp协议的客户端与服务端的数据传输,http协议是tcp上层协议。这里创建了一个简单的web服务器,并对提交表单数据进行...
之前介绍了http模块的请求与响应的过程,也介绍了tcp协议的客户端与服务端的数据传输,http协议是tcp上层协议。这里创建了一个简单的web服务器,并对提交表单数据进行处理,根据了不起的node.js一书总结。
post方法提交表单数据
之前也总结过,向服务器提交数据需要使用post方法,get方法的请求信息都在查询字符串中,没有请求体,而post方法的传输的数据都在请求体中,故提交表单数据时需要使用post方法。
req是请求信息,req.url表示请求的地址,当服务器运行之后,req请求的网址为127.0.0.1:3000,此时req.url为‘/',则返回的是一串表单数据,在表单数据中设置了method是post,action是‘/url',表面提交数据的方式是post,将数据提交的地址为127.0.0.1:3000/url,而提交之后要获取新的页面即127.0.0.1:3000/url,此时req.url为‘/url',故显示的另一个页面。
//提交表单数据 var http=require('http'); var querystring=require('querystring'); var server=http.createserver(function (req,res) { //req.url不同则返回的页面不同 if('/'==req.url){ res.writehead(200,{'content-type':'text/html'}); res.write([ '<form method="post" action="/url">', '<h1>my form</h1>', '<fieldset>', '<label>personal information</label>', '<p>what is your name?</p>', '<input type="text" name="name">', '<button>submit</button>', '</form>' ].join('')); res.end(); }else if('/url'==req.url&&req.method=='post'){ var reqbody=''; req.on('data',function (data) { reqbody += data; }); req.on('end',function () {//用于数据接收完成后再获取 res.writehead(200,{'content-type':'text/html'}); res.write('you have sent a '+req.method+' request\n'); res.write('<p>content-type:'+req.headers['content-type']+'</p>' +'<p>data:your name is '+querystring.parse(reqbody).name+'</p>'); res.end(); }) }else{ res.writehead(404); res.write('not found'); res.end(); } }).listen(3000,function () { console.log('server is listening 3000'); });
提交之后,需要获取请求信息的请求体,因为post方法中信息都在请求体中,用req绑定data事件获取数据,这里需要注意的是必须得在数据接收完成后再对数据进行操作,即必须绑定end事件监听请求信息是否传输完成。
querystring是查询字符串模块,用于对查询字符串的解析,parse方法将查询字符串解析成一个对象。在git中运行服务器,得到页面是这样的:
提交数据后:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
php之curl实现http与https请求的方法,phpcurlhttps请求_PHP教程
-
输入值/表单提交参数过滤有效防止sql注入的方法_PHP
-
php防注入,表单提交值转义的实现详解_PHP教程
-
Form表单提交时的遮罩层
-
php自动提交表单的方法(基于fsockopen与curl)
-
spring cloud 之 Feign 使用HTTP请求远程服务的实现方法
-
PHP使用token防止表单重复提交的方法
-
spring cloud 之 Feign 使用HTTP请求远程服务的实现方法
-
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
-
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定