如何将Javascript数组作为Json与html表单结合发送?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将Javascript数组作为Json与html表单结合发送?相关的知识,希望对你有一定的参考价值。

我正在创建一个餐厅菜单应用程序,服务员可以用来输入订单。

我有一个名为itemOrderList的Js数组,我正在存储项目名称。我希望能够将项目名称列表以Json数组的形式发送,并将客户名称和项目价格输入到后端,存储在我的数据库中。我在做这件事时遇到了一些问题。我应该怎么做?Google开发工具显示 "ReferenceError: itemOrderList is not defined",而我正试图将Js数组字符串化。

AngularJs代码

 .controller('orderAddCtrl', ['$scope', '$location', 'dataService', function ($scope, $location, dataService) {

            $scope.itemOrderList = [];
            $scope.totalItemPrices = 0;

            $scope.addOrderToList = function (item) {
                console.log(item.itemName);
                $scope.addPricesToTotalItemPrices(item.itemPrice);
                $scope.itemOrderList.push(item.itemName);
            };

            $scope.addPricesToTotalItemPrices = function (price) {
                console.log(price);
                $scope.totalItemPrices += price ;
            };


            $scope.removeFromOrderToList = function (index) {
                console.log(index);
                $scope.itemOrderList.splice(index, 1);
            };

            $scope.createOrder = function (order) {
                var myJson = JSON.stringify(itemOrderList);
                order.orderPrice = totalItemPrices;
                order.orderItems = myJson;
                dataService.addOrder(order).then(function () {
                    $location.path('/');
                });
            };

html

<form class="form-horizontal" ng-init="getItems()">
    <div class="row">
        <div class="col-6">
            <div class="form-group">
                <div>
                    <input ng-click="createOrder(order)" class="btn  btn-success" value="Create" />
                    <a href="#/" class="btn  btn-success">Back</a>
                </div>
            </div>
        </div>

        <div class="col-6">
            <div class="form-group">
                <label class="control-label">Customer Name</label>
                <div class="col-lg-10">
                    <input type="text" class="form-control" ng-model="order.customerName" />
                </div>
            </div>
        </div>
    </div>

    <div>
        <h1>Total Price: ${{totalItemPrices}}</h1>
    </div>

    <div class="">
        <h2>Food Items</h2>
        <div class="row">
            <button class="btn btn-success col-3" ng-repeat="i in Items" ng-click="addOrderToList(i)">{{i.itemName}}</button>
        </div>
    </div>


    <div class="">
        <h2>Order Items</h2>
        <ul>
            <li ng-repeat="i in itemOrderList track by $index">
                <p>{{i}}/<p>
                    <button ng-click="removeFromOrderToList($index)">Remove</button>
            </li>
        </ul>
    </div>
    </div>
</form>
答案

我敢打赌,你需要指定你正在使用$scope中声明的vars,如...

$scope.createOrder = function (order) {
  var myJson = JSON.stringify($scope.itemOrderList);
  order.orderPrice = $scope.totalItemPrices;
  order.orderItems = myJson;
  dataService.addOrder(order).then(function () {
    $location.path('/');
  });
};

以上是关于如何将Javascript数组作为Json与html表单结合发送?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JavaScript 将包含多个数组的数组作为参数化 URL 传递

如何在 javascript 中访问多维 PHP 数组作为 json 编码的变体?

将 Javascript 数组与 Java 列表匹配

是否可以将javascript数组存储在json中? [复制]

怎样将JAVA中得list集合转换为javascript的二维数组?

如何将 json 编码的 PHP 数组转换为 Javascript 中的数组? [复制]