JSON对象值传递给NodeJS服务器端

问题描述 投票:0回答:1

我想使用NodeJ和Handlebars中的JSON对象值更新MySQL数据库。我已经成功创建了JSON。该JSON仅包含idupdated_order。现在,我必须使用updated_order值,并使用where子句的id值对其进行更新。

但是尝试这样做时出现错误。

500个内部错误upOrders不可迭代

按钮->

<form id="skuFormorders" method="post" action="/productorder">
  <button id="update_order" type="submit" class="btn btn-outline-success btn-sm" style="background-color:white" onclick="xxx.prepUpdateOrder();">Yes</button>
</form>

在products.handlebars中创建JSON对象->

xxx.getUpdateOrderJson = function(){
var jsonObj = [];
var id = '';
var existing_order = '';
var updated_order= '';
var updated_row='';
jQuery("table tbody tr").each(function (index, value) {
    id = $(value).find('.orderid').data("value");
    existing_order = $(value).find('.exsorder').data("value");
    updated_order = (index+1);
    updated_row = {}

    if(existing_order != updated_order){
      updated_row ["id"] = id;
      updated_row ["updated_order"] = updated_order;
      jsonObj.push(updated_row);
    }
});
console.log(JSON.stringify(jsonObj));
return JSON.stringify(jsonObj);
};

xxx.prepUpdateOrder = async function (e) {
  $('#upOrders').val(xxx.getUpdateOrderJson());
  document.getElementById('skuFormorders').submit();
});

[C0的输出->

console.log(JSON.stringify(jsonObj));
javascript node.js json handlebars.js
1个回答
0
投票

编辑:根据表单的HTML,我可以看到您没有ID为[{"id":2,"updated_order":1},{"id":3,"updated_order":2},{"id":1,"updated_order":3}] 的输入,因此您的数据没有被附加,因此upOrdersreq.body(一个空对象)。

向表单添加输入,以便您的jQuery可以将更新的订单附加到提交的数据中:

{}

首先,请确保您正在使用服务器的<form id="skuFormorders" method="post" action="/productorder"> <input type="hidden" id="upOrders" name="upOrders" /> <button id="update_order" type="submit" class="btn btn-outline-success btn-sm" style="background-color:white" onclick="xxx.prepUpdateOrder();">Yes</button> </form> 中间件来处理表单提交。 body-parser

https://github.com/expressjs/body-parser

您的错误是说var bodyParser = require('body-parser') var app = express() // parse application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: false })) // parse application/json app.use(bodyParser.json()) 不可迭代。这是因为您将表单元素的值设置为JSON字符串:

req.body.data

因此,最有可能$('#upOrders').val(xxx.getUpdateOrderJson()); 具有一个名为“ upOrders”的属性(或“ #upOrders”元素的任何“ name”属性),然后您需要在以下位置调用req.body

JSON.parse

这对您如何将表单数据发送到服务器以及服务器如何处理数据进行了许多假设。要获取需要调用let upOrders = null; if(req.body.upOrders) { upOrders = JSON.stringify(req.body.upOrders); } else { throw new Error('Request is missing "upOrders"'); } 的确切属性,应检查JSON.parse的内容并找到存储数据的属性。

© www.soinside.com 2019 - 2024. All rights reserved.