[英]Nodejs and Expressjs sending ajax post request is not working
我在http:// localhost:3000 / users中發送帖子數據時遇到問題。我正在使用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>
問題是您正在嘗試執行POST /users
但是您沒有在express中設置適當的路由,而只有GET /users
。
將Express中的路由更改為router.post('/users', ...)
而不是router.get('/users', ...)
。
根據您的評論,看來實際的問題不是您的AJAX調用失敗了,而是與您在錯誤的位置中查找POST數據有關。 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
。
問題可能是您正在讀取參數,就像它們是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;
注意:請確保您已經配置了body-parser中間件:
app.use(bodyParser());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.