1.接收参数

在Node中接受GET/POST请求的参数不像PHP那样,在PHP中直接有全局变量$_GET,$_POST来接受url,或者请求体重的参数。

在node中接受GET参数使用url.parse(req.url, true).query可以获取请求参数,使用queryString.parse(data)来从请求体中来获取字段。

  1. // server.js
  2. var http = require("http");
  3. var url = require('url');
  4. var router = require('./router');
  5.  
  6. http.createServer(function(req, res){
  7. if ( req.url !== '/favicon.ico'){
  8. pathname = url.parse(req.url).pathname.replace(/\//,'');
  9. console.log(pathname);
  10. try {
  11. router[pathname](req, res);
  12. } catch(e) {
  13. console.log('error:'+e);
  14. res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
  15. res.write(e.toString());
  16. res.end();
  17. };
  18. }
  19. }).listen(3000);
  20. console.log("server running at http:127.0.0.1:3000");
  1. /**
  2. * router.js
  3. */
  4. var fs = require('fs');
  5. var url = require('url');
  6. var querystring = require('querystring'); //post需要导入
  7.  
  8. module.exports = {
  9. login: function(req, res){
  10.  
  11. /***** GET 为同步获取参数 ***/
  12. /* GET接受参数
  13. var rdata = url.parse(req.url, true).query;
  14. console.log(rdata);
  15. if (rdata['email']!=undefined) {
  16. console.log(rdata['email']);
  17. }
  18. */
  19. /***** GET 为同步获取参数 ***/
  20.  
  21. /**************POST***********异步*********************/
  22. var post ='';
  23. req.on('data', function(chunk){
  24. post += chunk;
  25. });
  26. req.on('end', function(){
  27. post = querystring.parse(post);
  28. console.log('收到参数:'+post['username']); //因为这里是异步,所以不能使用 res.write();
  29. console.log('收到参数:'+post['password']);
  30. //console.log('收到参数:'+post); // Cannot convert object to primitive value
  31. // *** 这里会报错哟!!!! ***
  32.  
  33. fs.readFile('./login.html', function(err, data){
  34. if( err){
  35. console.log(err);
  36. res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'})
  37. res.write(err.toString());
  38. res.end();
  39. } else {
  40. res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'})
  41. res.write(data);
  42. res.end();
  43. }
  44. })
  45. })
  46. /*************************异步*********************/
  47.  
  48. },
  49. register:function(req, res){
  50. fs.readFile('.register.html', function(err, data){
  51. if(err) {
  52. console.log(err);
  53. res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'})
  54. res.write(err.toString());
  55. res.end();
  56. return;
  57. } else{
  58. res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
  59. res.write(data);
  60. res.end();
  61. }
  62. })
  63. },
  64. showImage:function(req, res){
  65. fs.readFile('./test.png',function(err, data){
  66. if (err) {
  67. console.log(err);
  68. return;
  69. } else{
  70. console.log("开始读取图片");
  71. res.writeHead(200, {'Content-Type':'image/jpeg'});
  72. res.write(data);
  73. res.end();//写在互调函数外面会报错的哟
  74. }
  75. })
  76. }
  77.  
  78. }

node基础11:接受参数的更多相关文章

  1. [.net 面向对象编程基础] (11) 面向对象三大特性——封装

    [.net 面向对象编程基础] (11) 面向对象三大特性——封装 我们的课题是面向对象编程,前面主要介绍了面向对象的基础知识,而从这里开始才是面向对象的核心部分,即 面向对象的三大特性:封装.继承. ...

  2. python基础——函数的参数

    python基础——函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复 ...

  3. java基础(11) -JDBC

    java基础(11) -JDBC jdbc 1.装载驱动 载入跟数据库建立连接的驱动 /* sql server: String className ="com.microsoft.sqls ...

  4. node基础篇二:模块、路由、全局变量课堂(持续)

    今天继续更新node基础篇,今天主要内容是模块.路由和全局变量. 模块这个概念,在很多语言中都有,现在模块开发已经成为了一种潮流,它能够帮助我们节省很多的时间,当然咱们的node自然也不能缺少,看下例 ...

  5. Node.js express获取参数有三种方法

    express获取参数有三种方法:官网介绍如下 Checks route params (req.params), ex: /user/:id Checks query string params ( ...

  6. 十一. Python基础(11)—补充: 作用域 & 装饰器

    十一. Python基础(11)-补充: 作用域 & 装饰器 1 ● Python的作用域补遗 在C/C++等语言中, if语句等控制结构(control structure)会产生新的作用域 ...

  7. node基础-文件系统-文件写操作

    文件操作频率最高的就是读跟写.nodejs的文件的读取API在<node基础-文件系统-读取文件>里已经简单介绍过,本文就简单介绍下nodejs的文件写API. nodejs的文件操作均提 ...

  8. 『Python基础-11』集合 (set)

    # 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...

  9. node基础(一)——http模块

    一.http模块 http.createSverver() http是node自带的模块,通过require("http")的方法载入: 使用http创建服务器: http.cre ...

随机推荐

  1. 使用C#类向数据库添加数据的例子源码

    在上一篇中,增加了sql server数据库操作类SqlOperator,用于操作sql server数据库.还有一个SqlStringHelper类,用于处理sql语句的单引号.那么这两个类怎么使用 ...

  2. jquery右键菜单

    点击这里体验效果 如果要屏蔽页面原来的右键菜单,请设置disable_native_context_menu:true 以下是源代码: <!DOCTYPE html> <html&g ...

  3. js 理解new的运行机制

    先上段代码: function People(name) { this.name = name; } People.prototype.sayName = function () { console. ...

  4. ASP.NET MVC之路由深究

    MVC的强大之处之一当然是路由,这是几年前一位牛人给我说过的话,本人深感认同.今天就再次探究. 首先新建一个空的MVC项目,我们会发现在RouteConfig类中存在一个默认的路由配置,通常我会在这里 ...

  5. .NET项目集成VS混淆加密

    在微软.NET体系下开发软件难免遇到加密类库的需要,从商业的角度出发,使用像Xenocode .NET.Dotfuscator专业版等混淆器肯定是最好的选择, 作为一般小项目,我倒是觉得简单.易用达到 ...

  6. Inplace Search on document libraries and lists is not working

    [http://sharepointfarmer.com/inplace-search-on-document-libraries-and-lists-is-not-working/] I ran i ...

  7. Android内存泄漏

    Java是垃圾回收语言的一种,其优点是开发者无需特意管理内存分配,降低了应用由于局部故障(segmentation fault)导致崩溃,同时防止未释放的内存把堆栈(heap)挤爆的可能,所以写出来的 ...

  8. WWDC 后苹果最新 App Store 审核条款!

        WWDC 2016 大会之后,苹果公司发布了四个全新平台:iOS,macOS,watchOS 和 tvOS.并且在此之后,苹果应用商店审核条款也同时进行了更新——貌似不算进行了更新,简直就是重 ...

  9. h5滑动方向、手机拖动层

    做h5时需对手指滑动方向判断及拖动浮动层,本文代码适用于手机端h5页面,pc页面可使用onMouseDown.onMouseUp.onMouseMove.(本方法仅为功能实现原理和演示,可根据自己的需 ...

  10. border 外边框

    语法: border:<line-width> || <line-style> || <color> <line-width> = <length ...