【问题标题】:How to pass html table to laravel controller using ajax request?如何使用 ajax 请求将 html 表传递给 laravel 控制器?
【发布时间】:2017-07-09 08:26:03
【问题描述】:

如何使用 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 之间没有区别。两者都只返回由 ajax 发送的表的一列,但我想要列的所有值......

【问题讨论】:

  • 按数组我的意思是:
  • #startTime 表示“带有 id 的元素”开始时间,这里没有这样的元素。您有带有 name startTime[] 的元素,您应该使用这些元素。
  • @apokryfos 是的,你的权利。TNX

标签: php jquery ajax laravel-5.3


【解决方案1】:

你不能做你想做的事。您必须根据表数据的正确名称手动构造数组。 #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},

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签