当前位置: 首页 > 知识库问答 >
问题:

重定向后获取数据

笪建章
2023-03-14

我有一个页面“/order/new”,它包括两个客户及其地址的下拉菜单和一个重定向选择要添加到订单中的产品的按钮,我在一个数组中获得产品,并将该数组传递给“/order/new”。但是当我重定向时,我没有获得选定的客户及其地址。我将按顺序添加的产品保存在全局数组hh中,它从ajax获得数据

我想在添加产品数组后获取客户及其地址


global.hh = new Array();

module.exports = {

getProduct: (req , res ) => {
  var products = req.query.selectedProduct;
  var total = req.query.sumTotal;
 var btekh = hh.push(products)
}
getOrderProduct: (req , res) => {
  let query1 = "SELECT * FROM `product`";
  getConnection().query(query1 ,(err , result) => {
    if(err) {
     return res.status(500).send(err);
    }
    res.render('productOrder.ejs' , {
      products: result
    });
  });
},
addOrderProduct: (req, res) => {
  res.redirect('/order/new')
}


postOrder: (req ,res) => {
  var products = req.session.products;
    getConnection().query('INSERT INTO `order` ( clientId , addressId,orderStatusId) VALUES (?,?,?)', [req.body.selectUser, req.body.selectAddress,req.body.selectedStatus], (err,result) => {
    if (err) {
      console.log(err);
    }
  hh.slice(-1)[0].forEach(function (item) {
    let insertedOrder = result.insertId;
    let query = "INSERT INTO `orderProduct`( `orderIdProduct`, `productId`, `orderProductName`,`orderProductPrice`, `orderProductQuantity`, `orderProductTotal`) VALUES (?,?,?,?,?,?)";
    getConnection().query( query , [insertedOrder,item.check,item.name,item.p,item.q,item.total] , (err , result)=>{
      if (err) {
        console.log(err);
      }
      res.end();
  })
})
})
}
  res.redirect('/')
}
app.get('/order/new' , addOrderPage)
app.use('/postOrder' , postOrder);
app.use('/order/product' , getProduct);

我的ajax代码:

////////////////add users's address///////////////////////////
 $('#user').change(function(){

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

;
//////////////get the product to order/////////////
     $('#save').click(function () {
        var orderProduct = new Array();
        $("#table input[type=checkbox]:checked").each(function () {
                      var row = $(this).closest("tr");
                      var message0 = row.find('#check').val();
                      var message1 = row.find('.name').text().trim();
                      var message3 =  row.find('.currency').text().trim();
                      var message4 =  row.find(".foo").val();
                      const result =  {check: message0,name: message1,p: message3,q:  message4 ,total: message3 * message4}
                      var hh = orderProduct.push(result);
                });
                console.log(orderProduct);
                var totalPrice = 0;
             orderProduct.forEach(function (item , index) {
                totalPrice = totalPrice + item.total
              })
              $.ajax({
                type: 'GET',
                data: {selectedProduct: orderProduct , sumTotal: totalPrice},
                url: '/order/product',
                success: function (data) {
                  console.log(data);
                }
              })
               })

“/new/order”得我得ejs

<header>
        <h2>New Order : </h2>
      </header>
      <form action="/postOrder" method="post" id="newForm" >
        <label> User Name:</label>
        <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>
        <br>
        <label>Product</label>
      <a href="/orderProduct" id="addProduct"> add product</a>
        <br>
        <label>Status</label>
        <select name="selectedStatus">
        <% status.forEach((status) => { %>
            <option value="<%= status.statusId %>"> <%= status.statusText %></option>
        <%  })  %>
      </select>
      <br>
        <input type="submit" value="Save">
      </form>

共有1个答案

钱繁
2023-03-14

在这些方面,

res.render('productOrder.ejs' , {
      products: result
    });

是否成功地从数据库取回所有产品?

因为在您的AJAX调用中,

$.ajax({
            type: 'GET',
            data: {selectedProduct: orderProduct , sumTotal: totalPrice},
            url: '/order/product',
            success: function (data) {
              console.log(data);
            }
          })

您正在发送数据,但没有在这里的“Query1”中使用它,

let query1 = "SELECT * FROM `product`";

我在查你的程序流程。

用户转到你的网页,选择一个产品,你的网页用产品信息ping你的REST服务器,你的REST服务器ping你的数据库寻找那个产品,然后这个数据就呈现在这个模板上了?

res.render('productOrder.ejs' , {
      products: result
    });

编辑:您必须处理与事件侦听器的用户交互以及使用某种存储方法的用户输入。

your_client-side_js_script.js

function handle_submit(e) {
  e.preventDefault();
  if (e.target.id === 'addProduct') {
    // When they click add product, you need to either pass their user details to the route and send them with the $.ajax GET request
    //... and keep track of the data like that
    // OR
    // track that data in a cookie,
    read up on cookies https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie
  } else if (e.target.id === 'newForm') {
    console.log("Submit Form");
  }
};
$('#addProduct').on('click', handle_submit);
$('#newForm').on('submit', handle_submit);

我推荐使用cookie方法。您只需设置一次cookie,在需要时使用它,然后在完成时删除它。

对于第一种方法,您必须在fetch中发送数据(它不需要这些数据来获取产品),然后您必须在整个后端管理user_data,以确保它不会丢失。工作太多了。请改用cookie方法。

 类似资料:
  • 问题内容: 在页面重定向(最好使用curl或wget)之后,我需要获取最终的URL。 例如, http://google.com 可以重定向到 http://www.google.com 。 内容很容易获得(例如),但是我只对最终URL(在前一种情况下为http://www.google.com)感兴趣。 仅使用Linux内置工具有什么方法可以做到这一点?(仅命令行) 问题答案: 的选项和sub变

  • 问题内容: 我正在使用访问管理(AM)服务器创建社交登录页面。当用户单击登录按钮时,我将对AM服务器进行一次http调用。AM服务器生成带有身份验证cookie的HTTP 301重定向响应到社交登录页面。我需要以某种方式遵循此重定向响应,并在Web浏览器中显示新内容。 用户界面:ReactJS 请求: 响应 反应代码: 如何跟踪重定向响应并在Web浏览器中显示新内容? 问题答案: Request.

  • 有人能给我解释一下如何在Spring WebFlux和Thymeleaf中实现后重定向get模式吗?什么订阅了数据库保存方法?

  • 我可以使用下面的curl命令获得重定向的url。 但我有一个案例,页面加载200状态,但在2或3秒后,页面被重定向。Curl给我的原始url的响应是200,但在等待几秒钟后会发生301重定向。 有没有办法让卷曲追踪出最后的重定向?

  • 问题内容: 我找到了许多描述PRG的网站,但没有简单的PHP代码示例。 这是我实现的: 该有一个动作:。 将永远不会被用户看到; if验证所有内容,如果有效,则将其写入数据库并生成确认页面的HTML;如果无效,则生成错误页面的HTML,以解释错误所在。 生成的HTML都存储在变量中,然后调用。 的of (如果用户读取了URL)仅由组成。 在我看来,这就像针对页面重新加载和后退按钮问题的防护措施。

  • 我正在使用Java,我想向URL发送请求,然后获取重定向到的URL。 我想解决方案,如果它包括使用HttpClient和请求,因为我已经使用了过去。