我是新来的节点,当用户尝试提交表单时,尝试显示验证错误(使用express-validator和express 4)。node/express 4:在ajax post上使用express-validator显示错误

验证程序似乎工作,因为如果我将数据记录到控制台,一切都如预期。但是,当我渲染视图时,无法在页面上显示错误(不显示任何内容)。与我一直在进行快速验证的“标准”教程唯一的区别是,我使用AJAX发布数据。

我的代码如下。我使用来表明我删除了更多的代码,并且为了简洁起见我删除了一些表单域。

app.js

var express = require('express')

, indexController = require('./routes/index')

, membersController = require('./routes/members')

[...]

, cookieParser = require('cookie-parser')

, bodyParser = require('body-parser')

, expressValidator = require('express-validator');

var app = express();

[...]

app.use(bodyParser.json());

app.use(bodyParser.urlencoded({ extended: false }));

app.use(expressValidator()) // tried both placing it here or below

app.use(cookieParser());

app.use(express.static(path.join(__dirname, 'public')));

// I realize this may be not optimal

app.use(function(req,res,next){

req.db = db;

next();

});

app.use('/', indexController);

app.use('/members', membersController);

[...]

module.exports = app;

handle_members.js

$(document).ready(function() {

$('#join_btn').click(function(event, req, res){

event.preventDefault();

var newMember = {

'name': $('#join_form input#join_name').val(),

'email': $('#join_form input#join_email').val()

}

$.ajax({

type: 'POST',

data: newMember,

url: '/members/addmember',

dataType: 'JSON'

}).done(function(response){

if (response.msg === 'success'){

alert('New member added successfully!')

}

// maybe this is not necessary?

else if (response.msg === 'validation'){

alert('validation failed');

}

else{

alert('Error: ' + response.msg)

}

});

});

});

members.js

var express = require('express');

var router = express.Router();

router.post('/addmember',validator, function(req, res) {

var db = req.db;

var collection = db.get('memberstest');

collection.insert(req.body, function(err, result){

res.send(

(err === null) ? { msg: 'success' } : { msg: err }

);

});

});

function validator(req, res, next) {

req.checkBody('email', 'not valid email').isEmail();

req.checkBody('name', 'cannot be empty').notEmpty();

var errors = req.validationErrors();

if (errors) {

console.log(errors) // these are as expected

res.render('index',{errors:errors}); // no errors displayed

}

else {

next();

}

};

module.exports = router;

index.jade

[...]

form#join_form(method='POST', action='', role='form')

div.form-group

input#join_name.form-control(type='text', name='join_name')

input#join_email.form-control(type='email', name='email')

button#join_btn.btn(type='button') join

if errors

ul

for error in errors

li = error.msg

[...]

的错误变量记录到控制台时,看起来是这样的:

[ { param: 'email', msg: 'not valid email', value: 'xxxx' }, { param: 'name', msg: 'can't be empty', value: '' } ]

在过去的几天我确实尝试了很多不同的东西,但没有一次成功。这个问题似乎总是一样的:所有的都很好,但是当我渲染视图时就像它从不输入“if errors ...”语句。也许我在这里错过了一些非常基本的东西?任何帮助非常感谢,谢谢。

PS。最终,表单理想情况下应该在模式/弹出窗口内,以防改变某些内容。

2017-07-31

Tommy

+0

你能呈现怎样的错误变量的样子: var data = {}; // data here $.ajax({ type: 'POST', data: data, url: '/addmember', dataType: 'JSON' }).done(function() { alert('done'); }).fail(function() { alert('fail'); });

使用res.json后端答案呢? –

2017-07-31 01:44:43

+0

@MarceloAlves确定我更新了这个问题。 –

node ajax validator,node/express 4:在ajax post上使用express-validator显示错误相关推荐

  1. 本地跨域处理ajax,Node.js配合node-http-proxy解决本地开发ajax跨域问题

    情景: 前后端分离,本地前端开发调用接口会有跨域问题,一般有以下3种解决方法: 1. 后端接口打包到本地运行(缺点:每次后端更新都要去测试服下一个更新包,还要在本地搭建java运行环境,麻烦) 2. ...

  2. ajax请求node.js_Node.js测试:模拟HTTP请求

    ajax请求node.js Writing tests for an application that relies on external services, say, a RESTful API, ...

  3. Express框架与Ajax应用

    文章目录 Express框架 Ajax发送请求前的准备 前端页面的准备 服务端的代码准备 用Ajax发送GET请求 服务器端js 请求端 代码的注意点 Ajax设置请求参数 Express框架 Exp ...

  4. express应用中ajax结合模板引擎ejs.js渲染页面

    一.express应用中ajax结合模板引擎ejs.js渲染页面 在views新建一个渲染模板命名 Template.ejs Template.ejs 示例: <% if(coursesList ...

  5. 如何在Node.js上的Express.js中获取GET(查询字符串)变量?

    是否可以像在PHP的$_GET中那样在Node.js的查询字符串中获取变量? 我知道在Node.js中,我们可以在请求中获取URL. 有没有获取查询字符串参数的方法? #1楼 2014年5月4日更新 ...

  6. node+express使用multiparty实现文件上传

    欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 作者|王小强 来源|https://my.oschina.ne ...

  7. 【Node.js】node入门全攻略

    文章目录 一.初识 Node.js (一)JS 解析引擎 (二)JS 运行环境 (三)Node.js 1.作用 2.命令 二.fs 文件系统模块 (一)fs 模块 (二)方法 1.fs.readFil ...

  8. ajax html页面传参数,jQuery AJAX:如何将大型HTML标记作为参数传递?

    如何使用jQuery AJAX将大型HTML标记数据传递给我的PHP?当我收到结果时,这是错误的. jQuery AJAX代码: $('#saveButton').click(function() { ...

  9. jquery中ajax完整例子get,jq的ajax方法,jquery中ajax完整例子

    jq的ajax方法,jquery中ajax完整例子 相较与js异步对象的繁琐,jq的ajax对象结构更加清晰 一:ajax对象简述 ajax(Asynchronous JavaScript and X ...

最新文章

  1. 拖拽公式图片、一键转换LaTex公式,这款开源公式识别神器比Mathpix Snip更适合你...
  2. 【练习】OC语法的简单复习
  3. Typora markdown公式换行等号对齐_【精品软件 第3期】 有颜有料的编辑器——Typora
  4. C# SVN检出的代码,F12显示从元数据
  5. Apache中Virtual Host虚拟主机配置及rewrite参数说明
  6. java调用net_Java调用C#.net开发的WebService
  7. Mysql当前模式让不记录日志_MySQL日志binlog的三种模式
  8. 使用数据库保存Asterisk sip账号信息(odbc方式)
  9. 【技术】Qt对话框讲解
  10. docker安装与学习
  11. Linux命令sort的常用用法
  12. C++类的构造函数、析构函数与赋值函数
  13. Server Tomcat v8.0 Server at localhost failed to start.
  14. 调研时报表的相关信息
  15. python源文件是什么意思_.py文件是什么?
  16. 关于New Date()获取的不是当前电脑时间问题
  17. CHM格式 打开后不显示内容的解决办法
  18. C# linq的学习及使用
  19. matlab特征值是空集,MATLAB中矩阵方程求解的实现
  20. 滑膜炎的表现、诊断与治疗

热门文章

  1. Head First设计模式读书笔记五 第六章 命令模式(单例略过)
  2. Android笔记 帧动画
  3. Numpy出现TypeError: integer argument expected, got float的分析与解决
  4. 利用Linux命令和perl脚本批量将文件重命名
  5. MATLAB_排列组合_摸球组合生成
  6. python2.7出现的错误
  7. python构建指数平滑预测模型_python/scikit/numpy中r指数平滑状态空间模型的替代方案...
  8. servlet-cookie实现向客户端写cookie信息
  9. 找出出现次数最多的字母
  10. 产品结构bom设计 mongodb_产品结构设计·塑胶件热熔设计节选