如何使用 ajax 请求将 html table 传递给 laravel 控制器?

How to pass html table to laravel controller using ajax request?

如何使用 ajax 请求将 html 数组传递给 laravel 控制器? 在我看来,我确实喜欢以下内容:

<form>
                <table class="table table-striped border-top" id="modalTable">
                    <thead>
                        <tr>
                           <th>start-time</th>
                           <th></th>
                           <th>end-time</th>
                           <th>reserve</th>
                        </tr>
                    </thead>
                    <tbody id="change">
                        <tr>
                            <td name="startTime[]"></td>
                            <td></td>
                            <td name="endTime[]"></td>
                            <td name="reserved[]"></td>
                        </tr>
                    </tbody>
                </table>
                <input type="hidden" id="token" value="{{ csrf_token() }}">
            </form>

ajax 代码如下:

<script>
    $(document).on('click','.btn',function(){

        var startTime = $('#startTime').text();
        //alert(startTime);
        var endTime = $('#endTime').text();
        //alert(endTime);
        var token = $('#token').val();

        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
            }
        })

        $.ajax
        ({
            url:'reservePrivateChat',
            type:'post',
            data:{startTime:startTime,endTime:endTime,'_token':token},
            success:function()
            {
                alert('success');
            },
            error:function()
            {
                alert('error');
            }
        })

    });
</script>

在控制器中我喜欢下面的内容:

public function reservePrivateChat(Request $request)
{
    $startTime = $request->startTime;
    print_r ($startTime);
    $endTime = $_POST['endTime'];
    print_r($endTime);
}

控制器中$request$_POST没有区别。 return 只是 ajax 发送的 table 的一列,但我想要这些列的所有值...

你不能做你想做的事。您必须根据 table 数据的 正确 名称手动构建数组。 #startTime 选择器不存在,因为它正在查找 ID 为 startTime 的元素,但您只有一个元素为 name startTime[].

您可能会创建一个数组,如下所示:

    var startTime = [];
    $("[name='startTime[]]'").each(function () {
        startTime.push($(this).text());
    });
    var endTime = [];
    $('[name='endTime[]]'').each(function () {
        endTime.push($(this).text());
    });
    var token = $('#token').val();
    //No need for ajax setup if you're sending the token as a parameter
    $.ajax({
        url:'reservePrivateChat',
        type:'post',
        data:{ startTime:startTime,endTime:endTime,'_token':token},