簡體   English   中英

動態下拉菜單節點js

[英]Dynamic drop down menu node js

我是節點的新手。 我需要制作一個從屬下拉菜單,它從同一頁面的另一個下拉菜單中獲取所選用戶的地址數據..問題是洞頁面不僅更新了第二個下拉菜單..我認為這是同樣的問題作為nodejs mysql 中的動態下拉菜單,但它對我沒有多大幫助。

<select name="selectUser" id="user" >
  <option disabled selected> Select User..</option>
  <% users.forEach((users) => { %>
    <option value="<%= users.id %>" > <%=users.name %> </option>
  <%  })  %>
</select>
<br>
<label>Address :</label>
<select name="selectAddress" id="address">
  <option disabled selected> Select Address..</option>
  <% address.forEach((address) => { %>
    <option value="<%= address.addressId %>" > <%=address.addressName %> </option>
</select>
  <%  })  %>

我的ajax請求:

 $(document).ready(function(){
  $('#user').change(function(){

   var item =  $('#user').val();
   var add  = $('#address').val();
   $.ajax({
       type:'GET',
       data: {selectedId : item },
       url:'/order/new',
       success: function(result1){
           $('#body').html(result1);

       }
   });
  });
});

訂單.js

 module.exports = {
      addOrderPage: (req, res) => {
    let query1 = "SELECT * FROM users";
    getConnection().query(query1, (err, result1) => {
            let query2 = "SELECT * FROM address WHERE userId = '" +req.query.selectedId + "'";
            getConnection().query(query2, (err, rows, fields) => {
              if (err) {
                return res.status(500).send(err);
              }
               console,log(rows)
              res.render('newOrder.ejs', {
                  address : rows,
                  users: result1
              });
              });
    });
}
    }

應用程序.js

app.get('/order/new', addOrderPage)

您的成功函數缺少從請求中返回的數據更新您的成功函數

       $(document).ready(function(){
       $('#user').change(function(){ 

        var item = $('#user').val();

        $.ajax({
            type:'GET',
            data: { selectedId: item },
            url:'/users/address',
            success: function(data){
                console.log(data);
                 $('#address').empty();
             $('address').append("<option disabled selected> Select Address..</option>");
             $.each(data, function (index, addressObj) {
                    $('#address').append("<option value = '" + addressObj.id + "' > " + addressObj.first_name + ". </option > ");
                });
            }
        });
       });

在您的 order.js 中,您需要為用戶創建一個調用,一個調用用於用戶地址數據:-

      module.exports = {
    addOrderPage: (req, res) => {
        var selecteduser = req.query.selectedId;
        let query1 = "SELECT * FROM users";
        db.query(query1, (err, result1) => {
                if (err) {
                    return res.status(500).send(err);
                }
                res.render('newOrder.ejs', {
                    players: result1,
                });
        });
    },
    getUserAddress: (req, res) => {
        var selecteduser = req.query.selectedId;
        let query1 = "SELECT * FROM address WHERE userId = '" + selectedId + "'";
        db.query(query1, (err, result1) => {
            if (err) {
                return res.status(500).send(err);
            }
            res.send(result1);
        });
    }
}

新訂單.js

 <select name="selectUser" id="user" >
    <option disabled selected> Select User..</option>
     <% users.forEach((users) => { %>
    <option value="<%= users.id %>" > <%=users.name %> </option>
    <%  })  %>
 </select>
 <br>
 <label>Address :</label>
 <select name="selectAddress" id="address">
  <option disabled selected> Select Address..</option>
 </select>

在你的 app.js 或 index.js 你需要添加它的路由

 app.use("/users/address", order.getUserAddress); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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