firemail
标题: nodejs mongodb开发过程中问题记录 [打印本页]
作者: jimu 时间: 2016-1-2 13:03
标题: nodejs mongodb开发过程中问题记录
本帖最后由 jimu 于 2016-1-2 13:10 编辑
1. 500 (Internal server error)- app.post('/recordAdd', function(req, res, next) {
- var currentUser = req.session.user;
- 上面currentUser 这个变量如果没有获取,会报这个错误,因为后面用到
复制代码 2.[TypeError: Cannot read property 'ObjectID' of undefined]
var BSON = require('mongodb').BSONPure;
var obj_id = BSON.ObjectID.createFromHexString("568745c4dfde2f4c1e74490a");
改为:
var obj_id = require('mongodb').ObjectID.createFromHexString("568745c4dfde2f4c1e74490a");
作者: jimu 时间: 2016-1-2 17:42
本帖最后由 jimu 于 2016-1-2 17:43 编辑
3. 使用ajax时,nodejs中的render跳转功能不可用
跳转,这个逻辑在用form表单提交时是正常的,但是如果用jQuery的$.ajax函数提交,res.render(“login”);就不会转到登陆页面,对应的ajax代码如下:$.ajax({
type: 'POST',
url: '/recordQueryForModify',
contentType: "application/json; charset=utf-8",
data: postjsonStr });
在nodejs处可以获取到post 来的信息,说明ajax语句没问题,但是为什么就不能跳转呢?是不是form表单提交和ajax的post在连接方面有区别?
ajax 是用来传递数据的。客户端需要根据情况,进行跳转:window.location = url;这个语句写在ajax的回调函数里。根据后台返回的数据,判断逻辑进行跳转。
作者: jimu 时间: 2016-1-2 21:44
本帖最后由 jimu 于 2016-1-2 21:59 编辑
4.ajax成功返回后,如何把数据以post方法传送?
$.ajax({
type: 'POST',
url: '/recordQueryForModify',
contentType: "application/json; charset=utf-8",
data: postjsonStr,
success: function(data){
window.location = "/publish?post="+data.post; //这如何向另一个页面以post方式传递?
},
error: function (message) {
},
});
创建form
生成hidden
js触发提交
作者: jimu 时间: 2016-1-2 22:47
本帖最后由 jimu 于 2016-1-2 23:13 编辑
5.ejs文件中 <%=locals.post.title%> 获取服务端返回的变量,那对应的js文件中应该怎么写?var title = '<%=locals.post.title%>'; 这样写不行呀?
理解下ejs的原理:
ejs 在生成 html 的时候,会插值到 <%= %> 的地方。这是在服务端做的。
外部的引用的 js,是在 ejs 生成了 html 之后,由浏览器负责解释。
逻辑:
需要将你的 要用的变量的值在ejs文件中选保存起来,此位置能被外部js访问的地方。
解决方案:
- <script type="text/javascript">
- var post = '<%- JSON.stringify(locals.post) %>';
- post = JSON.parse(post);
- </script>
- <script type="text/javascript" src="/javascripts/publish.js"></script>
- publish.js中的调用如下:
- alert(post.title);
复制代码
欢迎光临 firemail (http://www.firemail.wang:8088/) |
Powered by Discuz! X3 |