基于node.js原生的一个post请求
html xhr请求
<body>
<div id="from">
<form action="" method="post">
<li>
<label>姓名</label><input type="text" id="username" name="username">
</li>
<li>
<label>密码</label><input type="text" id="password" name="password">
</li>
<li>
<button type="submit">登录</button>
<li>
</form>
</div>
</body>
<script>
//获取元素from
var from = document.getElementById("from");
//添加提交事件
from.addEventListener("submit",function(event){
//点击不刷新
event.preventdefault();
//获取元素username,password
var _username = document.getElementById("username");
var _password = document.getElementById("password");
var data = {
username:_username,
password:_password,
}
//创建函数
var xhr = new XMLHttpRequest();
//新建一个请求
xhr.open("post","/admin")
//让后台知道我们传过去的是一个什么文件
xhr.setRequsetHeader("text/Type","application/json")
//发送数据
xhr.send(JSON.stringify(data,null,2))
//
xhr.onreadystatechange=function(){
//如果readyState=4的话则传输完成
if(xhr.readyState == 4){
//接受后台传来的数据
console.log(xhr.response)
}
}
})
</script>
javascript //nodejs
const http = require("http");
const fs = require("fs");
const _url = require("url");
const path = require("path")
const host = "localhost"
const public = path.resole("public")
const server = http.createServer((req,res)=>{
//提取出url
const { url } = req;
//提取url的名称
lef file = _url.parse(url).pathname;
//如果file没有后缀名的话给他添加上
if(path.extname(file)= null || file =="/")file = index.html;
//链接工作路径和文件名
file = path.join(public,file);
//禁止ico(图标)进入
if(file="/favicon.ico") return;
//创建一个读取流
const readstream = fs.createReadstream(file);
//根据后缀名判断类型返回不同的类型
if(path.extname(file)){
switech(path.extname(file)){
case ".jpg" : res.setHeader("text-Type","image/gif");
break;
case ".png" : res.setHeader("text-Type","image/png");
break;
default : res.setHeader("text-Type","text/html");
break;
}}
//判断传过来的是不是post请求
if(req.method = "post"){
const result = "";//存储数据
//传送过来的是json数据
readstream.on("data",(err,data)=>{
result=data;
})
res.end(result)
}
readstream.pipe(res);
readsteam.on("error",()=>{
rds.close();//关闭
rds.destroy();//清楚缓存
res.statusCode=404;
res.setHeader("text-Type","html/text,charset = utf-8")
res.write(file);
res.end();
})
})
server.listen("3000",host,(err)=>{
if(err) throw err;
console.log(host+"3000");
})