我在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>
答案 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());