发送ajax post请求的Nodejs和Expressjs无法正常工作

时间:2015-05-19 08:09:13

标签: jquery node.js

enter image description here我在http://localhost:3000/users.I使用Expressjs框架和mongoDB作为我的数据库发送帖子数据时出现问题。主要的问题是当我在浏览器中检查ajax post方法时,它被跳过并且没有任何事情发生。 不确定出了什么问题

INDEX.js中的

router.post

router.post('/users', function(req, res) {
   var db = req.db;
   var users = db.get('orders');
   var sub_users = db.get('users');
   var col_name=req.query.colname;
   var col_value=req.query.colvalue;
   var ord_value=req.query.ordervalue;
   var limiter=req.query.pager;
   var query={};
   var itemsPerPage=20;
   query[col_name]=col_value;
   console.log(col_name);
   console.log(col_value);
   console.log(query);
   console.log(limiter);
   console.log(ord_value);
   if (limiter== null)
   {
      limiter=1;
   }
   if (col_name== "" || col_value== "")
   {
     query={};
   }
   var skiper=itemsPerPage * (limiter-1);  

   users.distinct('symbol',function(e, syms){
      sub_users.find({order_id: ord_value},{},function(e,executions){   
        users.find(query,{skip:skiper,limit: itemsPerPage},function(e, docs){
           res.render('users', { 
              'usersSym':syms,
              'users': docs,
              'limit': limiter  ,
              'col':col_name,
              'opt':col_value,
              'exe':executions,
              'order_id':ord_value
           });
        });
     });
   });
});
  

这里是关于如何发送帖子数据的jquery:

<script src="http://localhost:3000/javascripts/jquery-1.10.2.js"></script>
<script src="http://localhost:3000/javascripts/jquery-ui.js"></script>
<script>
   $('body').on('click', '.button', function() {
      $("exe-scroll").dialog( "option", "width", 1000 );
      pid = $(this).closest('tr').find('td:eq(2)').text();
      document.getElementById('text').value =pid;
      var data={};
      data.col_name = $('#select').val();
      data.col_value = $('#selected').val();
      data.limiter =  $('#number').val();
      data.ord_value = $('#text').val();
      $.ajax({
         url:'http://localhost:3000/users', 
         type:'POST',
         dataType:'json',
         contentType: "application/json",
         data: JSON.stringify(data), 
         success: function (data) { 
            $( "#exe-scroll" ).dialog({ 
                maxWidth:600,
                maxHeight: 500,
                width: 700,
                height: 500,
                resizable:true,
                modal: true,
                close: function() {
                }
            });
        },
        error:
           function (data) {
               console.log('error');
            }
    });    
});  
</script>

page element inspected

2 个答案:

答案 0 :(得分:2)

问题是您正在尝试执行POST /users但是您没有明确的路线设置,只有GET /users

将您的路线更改为router.post('/users', ...)而不是router.get('/users', ...)

根据您的评论,看起来实际问题不是您的AJAX调用失败,而是更多地与您在错误位置查找POSTed数据的事实有关。 req.query表示URL的查询字符串,在您的情况下,数据是在body中发送的,因此您需要从那里提取数据,即

var col_name = req.body.col_name;
var col_value = req.body.col_value;
var ord_value = req.body.ord_value;
...
console.log(col_name);
console.log(col_value);
console.log(ord_value);

此外,请密切注意此处的姓名,您正在寻找colname / colvalue等,而实际上客户正在发布col_name / col_value。< / p>

答案 1 :(得分:0)

问题可能是你正在阅读你的参数,就像他们是GET一样:

var col_name=req.query.colname;
var col_value=req.query.colvalue;
var ord_value=req.query.ordervalue;
var limiter=req.query.pager;

你可以试试吗?

var col_name=req.body.colname;
var col_value=req.body.colvalue;
var ord_value=req.body.ordervalue;
var limiter=req.body.pager;

注意:请确保您已配置正文解析器中间件:

app.use(bodyParser());