先上一下页面的代码:三种都用这个页面,可以直接运行的,本地测试过。希望可以给大家帮助,欢迎指正
“/nodejs/practice/login”这个路由地址是我本地的,请参考的小伙伴按照自己的地址改一下哦。
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>学习</title> <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script> </head> <body> <label for="username">用户名:</label><input id="username" type="text" name='username' /> <label for="password">密码:</label><input id="password" type="password" name='password' /> <input type="button" value="登录" id="login"> <br><span>状态:</span></label> <p id="loginInfo"></p> <br><span>用户:</span> <p id="loginName"></p> <script> $(function() { $('#login').click(function() { if ($('#username').val() && $('#password').val()) { //get $.get("http://localhost:3000/nodejs/practice/login", { 'user': $('#username').val(), 'password': $('#password').val() }, function(data) { console.info(data); }); //post $.ajax({ url: 'http://localhost:3000/nodejs/practice/login', type: 'POST', dataTypt: 'json', ContentType: 'application/json; charset=utf-8', data: { 'user': $('#username').val(), 'password': $('#password').val() }, success: function(data) { $('#loginInfo').html(data.resBody.msg); $('#loginName').html(data.resBody.user); console.info(data); /** *注意: *node请补充这一句: JSON.parse(data); */ }, error: function(e) { console.error(e); } }); } }); }); </script> </body> </html>
nodeJs
建立 server.js
var http = require('http'); var url = require('url'); var querystring = require('querystring'); var router = require('./router'); http.createServer(function(req, res) { console.log(req); var pathname = url.parse(req.url).pathname; res.setHeader("Access-Control-Allow-Origin", "*"); if (req.method === 'GET') { var querystr = querystring.parse(url.parse(req.url).query); var msg = router.route(pathname, querystr); res.writeHead(msg.code, { "Content-type": "Application/JSON; charset=utf-8" }); res.end(JSON.stringify(msg.resBody)); } else { var body = ''; var msg = {}; req.on('data', function(chunk) { body += chunk; console.log("1." + body); }); req.on('end', function() { console.log("结束"); body = querystring.parse(decodeURI(body)); msg = router.route(pathname, body); res.writeHead(msg.code, { "Content-type": "Application/JSON; charset=utf-8" }); console.log(msg); res.write(JSON.stringify(msg.resBody)); res.end(); }); }; }).listen(3000); console.log("服务已启动,请访问127.0.0.1:3000");
建立router,js
function route(pathname, querystr) { if (pathname === '/nodejs/practice/login') { return { 'code': 200, 'resBody': { 'msg': '登录成功', 'user': querystr.user } }; } else { return { 'code': 404, 'resBody': { 'msg': '没有这个路由啦', } }; } } exports.route = route;
Express
const express = require('express'); var app = express(); const url = require('url'); const queryString = require('querystring'); const bodyParser = require('body-parser'); app.use(bodyParser.urlencoded({ extended: false })); app.get('/nodejs/practice/login', (req, res) => { res.header('Access-Control-Allow-Origin', '*'); console.log(req); res.json({ 'resCode': 200, 'resBody': { 'msg': '登录成功', // 'user': queryString.parse(url.parse(req.url).query).user 'user': req.query.user } }); }); app.post('/nodejs/practice/login', (req, res) => { res.header('Access-Control-Allow-Origin', '*'); console.log(req); res.json({ 'resCode': 200, 'resBody': { 'msg': '登录成功', // 'user': queryString.parse(url.parse(req.url).query).user 'user': req.body.user } }); }); app.listen(3000); //res.end 是用来快速结束响应的返回空数据 //如果想返回数据,就用res.send 或者res.json //当传递对象或数组时,这两个方法是相同的,但是res.json()也会转换非对象,如null和undefined,这些无效的JSON。
Koa
const Koa = require('koa'); const app = new Koa(); const router = require('koa-router')(); const koaBody = require('koa-body')(); const koaCors = require('koa-cors'); const url = require('url'); const queryString = require('querystring'); app.use(koaCors()); router.post('/nodejs/practice/login', koaBody, (ctx) => { console.log(ctx.request.body); // => POST body ctx.body = { 'resCode': 200, 'resBody': { 'msg': '登录成功', 'user': ctx.request.body.user } }; } ); router.get('/nodejs/practice/login', koaBody, (ctx) => { console.log(ctx.request); ctx.body = { 'resCode': 200, 'resBody': { 'msg': '登录成功', 'user': queryString.parse(url.parse(ctx.request.url).query).user } }; }) app.use(router.routes()); app.listen(3000);