firemail

标题: nodejs mongodb开发过程中问题记录 [打印本页]

作者: jimu    时间: 2016-1-2 13:03
标题: nodejs mongodb开发过程中问题记录
本帖最后由 jimu 于 2016-1-2 13:10 编辑

1. 500 (Internal server error)
  1.   app.post('/recordAdd', function(req, res, next) {  
  2.     var currentUser = req.session.user;

  3. 上面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访问的地方。
解决方案:
  1. <script type="text/javascript">
  2.     var post = '<%- JSON.stringify(locals.post) %>';
  3.     post = JSON.parse(post);
  4. </script>
  5. <script type="text/javascript" src="/javascripts/publish.js"></script>

  6. publish.js中的调用如下:
  7. alert(post.title);
复制代码










欢迎光临 firemail (http://firemail.wang:8088/) Powered by Discuz! X3