node ajax validator,node/express 4:在ajax post上使用express-validator显示错误
我是新来的节点,当用户尝试提交表单时,尝试显示验证错误(使用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显示错误相关推荐
- 本地跨域处理ajax,Node.js配合node-http-proxy解决本地开发ajax跨域问题
情景: 前后端分离,本地前端开发调用接口会有跨域问题,一般有以下3种解决方法: 1. 后端接口打包到本地运行(缺点:每次后端更新都要去测试服下一个更新包,还要在本地搭建java运行环境,麻烦) 2. ...
- ajax请求node.js_Node.js测试:模拟HTTP请求
ajax请求node.js Writing tests for an application that relies on external services, say, a RESTful API, ...
- Express框架与Ajax应用
文章目录 Express框架 Ajax发送请求前的准备 前端页面的准备 服务端的代码准备 用Ajax发送GET请求 服务器端js 请求端 代码的注意点 Ajax设置请求参数 Express框架 Exp ...
- express应用中ajax结合模板引擎ejs.js渲染页面
一.express应用中ajax结合模板引擎ejs.js渲染页面 在views新建一个渲染模板命名 Template.ejs Template.ejs 示例: <% if(coursesList ...
- 如何在Node.js上的Express.js中获取GET(查询字符串)变量?
是否可以像在PHP的$_GET中那样在Node.js的查询字符串中获取变量? 我知道在Node.js中,我们可以在请求中获取URL. 有没有获取查询字符串参数的方法? #1楼 2014年5月4日更新 ...
- node+express使用multiparty实现文件上传
欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 作者|王小强 来源|https://my.oschina.ne ...
- 【Node.js】node入门全攻略
文章目录 一.初识 Node.js (一)JS 解析引擎 (二)JS 运行环境 (三)Node.js 1.作用 2.命令 二.fs 文件系统模块 (一)fs 模块 (二)方法 1.fs.readFil ...
- ajax html页面传参数,jQuery AJAX:如何将大型HTML标记作为参数传递?
如何使用jQuery AJAX将大型HTML标记数据传递给我的PHP?当我收到结果时,这是错误的. jQuery AJAX代码: $('#saveButton').click(function() { ...
- jquery中ajax完整例子get,jq的ajax方法,jquery中ajax完整例子
jq的ajax方法,jquery中ajax完整例子 相较与js异步对象的繁琐,jq的ajax对象结构更加清晰 一:ajax对象简述 ajax(Asynchronous JavaScript and X ...
最新文章
- 拖拽公式图片、一键转换LaTex公式,这款开源公式识别神器比Mathpix Snip更适合你...
- 【练习】OC语法的简单复习
- Typora markdown公式换行等号对齐_【精品软件 第3期】 有颜有料的编辑器——Typora
- C# SVN检出的代码,F12显示从元数据
- Apache中Virtual Host虚拟主机配置及rewrite参数说明
- java调用net_Java调用C#.net开发的WebService
- Mysql当前模式让不记录日志_MySQL日志binlog的三种模式
- 使用数据库保存Asterisk sip账号信息(odbc方式)
- 【技术】Qt对话框讲解
- docker安装与学习
- Linux命令sort的常用用法
- C++类的构造函数、析构函数与赋值函数
- Server Tomcat v8.0 Server at localhost failed to start.
- 调研时报表的相关信息
- python源文件是什么意思_.py文件是什么?
- 关于New Date()获取的不是当前电脑时间问题
- CHM格式 打开后不显示内容的解决办法
- C# linq的学习及使用
- matlab特征值是空集,MATLAB中矩阵方程求解的实现
- 滑膜炎的表现、诊断与治疗
热门文章
- Head First设计模式读书笔记五 第六章 命令模式(单例略过)
- Android笔记 帧动画
- Numpy出现TypeError: integer argument expected, got float的分析与解决
- 利用Linux命令和perl脚本批量将文件重命名
- MATLAB_排列组合_摸球组合生成
- python2.7出现的错误
- python构建指数平滑预测模型_python/scikit/numpy中r指数平滑状态空间模型的替代方案...
- servlet-cookie实现向客户端写cookie信息
- 找出出现次数最多的字母
- 产品结构bom设计 mongodb_产品结构设计·塑胶件热熔设计节选