javascript – 如何将表单中的Json发布到控制器然后保存到数据库

我有一个带有样本表值的表单,我的表(id = sampleTbl)hv 2列名和年龄.我想点击submitButton(id = idOfButton)时将它保存到我的数据库表人(id = AI,名称,年龄)

在我的代码下面,这是我的Javascript代码

<?PHP  
$script = <<< JS

$('#idOfButton').click(function(){
    var myTableArray = [];
    $("table#sampleTbl tr").each(function () {
        var arrayOfThisRow = [];
        var tableData = $(this).find('td');
        if (tableData.length > 0) {
            tableData.each(function () {
               arrayOfThisRow.push($(this).text());
            });
            myTableArray.push(arrayOfThisRow);
        }
    });
    var jsonEncode = JSON.stringify(myTableArray);
    // alert(jsonEncode);

    $.ajax({
        type: "POST",
        data: "pTableData=" + jsonEncode,
        success: function(msg){
            // alert(msg);
        },
    });

});

JS;
$this->registerJs($script);
?>

这是我的actionCreate控制器:

public function actionCreate()
{
    $model = new Person();

    if(isset($_POST['pTableData'])) {
        $tableData = stripcslashes($_POST['pTableData']);
        $tableData = json_decode($tableData, true);
        $model->name = $tableData[0]['name'];
        $model->age = $tableData[0]['age'];
        $model->save();
        return $this->redirect(['index']);
    } else {
        return $this->render('create', [
            'model' => $model,
        ]);
    } 
}

我的表格表格:

<?PHP $form = ActiveForm::begin(); ?>

<table id="sampleTbl", class="table table-striped table-bordered">
    <thead>
        <tr id="myRow">
            <th>Name</th>
            <th>Age</th>
        </tr> 
    </thead>
    <tbody>
        <tr>
            <td>william</td>
            <td>32</td>
        </tr>
        <tr>
            <td>Muli</td>
            <td>25</td>
        </tr>
        <tr>
            <td>Sukoco</td>
            <td>29</td>
        </tr>
    </tbody>
</table>

<div class="form-group">
    <?= Html::submitButton('Create',['class' => 'btn btn-success', 'id' => 'idOfButton']) ?>
</div>

<?PHP ActiveForm::end(); ?>

我不知道如何保存所有值数组.当我使用像$tableData [0] [‘name’];它只保存第一行.如何保存所有价值?

解决方法:

使用lopping foreach来保存数组:

foreach ($tableData as $key) {
    $model->isNewRecord = true;
    $model->id = NULL;
    $model->name = $key['name'];
    $model->age = $key['age'];
    $model->save();
}

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...