簡體   English   中英

Node.js和Express.js發送Ajax發布請求不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM