使用JSON和AJAX从输入表发送值

时间:2015-03-26 03:03:24

标签: php sql ajax json oracle

我在收集通过表插入的值并将它们收集为JSON数组时遇到问题。然后,将数组发送到JSON以进行数据库处理。所以我拥有的就是这个。该表是从数据库生成的,因此我使用$ posId作为标识符,取决于数据库中的值,行数

<tbody>
        <?php 
            $posId = 1;
            while ($row = oci_fetch_array($jobnameParse)){
                echo "<tr>";
                    echo "<td id='subjob'>".$row['PROJECT_NAME']."</td>";
                    echo "<td>".$row['PROJECT_DESC']."</td>";
                    echo "<td><input type='text' class='startDatePicker' style='margin-top:12px' id='startDate$posId'></td>";
                    echo "<td><input type='text' class='endDatePicker' style='margin-top:12px' id='endDate$posId'></td>";
                    echo "<td><input type='number' min='0' style='margin-top:12px' id='projectWeight$posId'></td>";
                echo "</tr>";
            $posId++;
            }
        ?>
    </tbody>

<button class="btn btn-large btn-green" onclick="submitJSON();" style="float: right;"><b>SUBMIT JOB TIMESPAN<b></button>

以下是与该表相关的脚本

<script type="text/javascript">
$(document).ready(function () {
    $('#jobsetupTable').DataTable();
    $('.startDatePicker').datepicker({dateFormat:"DD, dd-MM-yy"});
    $('.endDatePicker').datepicker({dateFormat:"DD, dd-MM-yy"});
});

var jobTableData;
    jobTableData = storeJobTableData();
    jobTableData = $.toJSON(jobTableData);

function storeJobTableData()
{
    var jobTableData = new Array();
    $('#jobsetupTable tr').each(function(row,tr){
        jobTableData[row]={
            "subJob":$(tr).find('td:eq(0)').text(),
            "startDate":$(tr).find('td:eq(2)').val(),
            "endDate":$(tr).find('td:eq(3)').val(),
            "subjobWeight":$(tr).find('td:eq(4)').val(),
            "job":'<?php echo $jobValue;?>'
        };
    });
    jobTableData.shift();
    return jobTableData;
}

function submitJSON()
{
    var tableDataValues;
    tableDataValues = $.toJSON(storeJobTableData());

    $.ajax({
        type:"POST",
        url:"processSubmitJobTable.php",
        data:{"tTableData":tableDataValues},
        success: function(msg){
            //Some Return Value
        }
    });
}

一些如何收集.val()输入值,我只能将.text()值发送到另一个页面。

2 个答案:

答案 0 :(得分:0)

经过数小时的试验后,我终于找到了答案

function storeJobTableData()
    {
        var jobTableData = new Array();
        $('#jobsetupTable tr').each(function(row,tr){
            jobTableData[row]={
                "subJob":$(tr).find('td:eq(0)').text(),
                "startDate":$(tr).find('td:eq(2)').find('input').val(),
                "endDate":$(tr).find('td:eq(3)').find('input').val(),
                "subjobWeight":$(tr).find('td:eq(4)').find('input').val(),
                "job":'<?php echo $jobValue;?>'
            };
        });
        jobTableData.shift();
        return jobTableData;
    }

答案 1 :(得分:0)

我有不同的方法来做这个,请为你的价值观一个隐藏的领域,如

<input type='hidden' name="startDatePicker[]" class='startDatePicker' style='margin-top:12px' id='startDate$posId'>

将这种类型的隐藏的fiels放在同一个td中,然后是你所有的td 在你的jquery而不是做一个数据对象只是序列化您的表单并将您的值作为数组发布在您的PHP控制器。 我认为这对你来说可能很简短,也很有用。