通过Laravel中的js onclick事件提交数据

时间:2014-06-15 22:06:22

标签: javascript php laravel laravel-4

如何通过js onclick事件提交表单?我使用的是Laravel 4.1。

我试过这段代码

@foreach ($items as $item)
    <li>
        {{ Form::checkbox('items', $item->id , $item->done, ['onClick'=> 'this.form.submit()']) }}
        {{ $item->name }}
    </li>
@endforeach

但我无法得到我想要的东西。 在控制器我有以下代码:

public function postIndex()
{
    $id = Input::get('id');
    echo $id;
}

顺便说一下,在Chrome控制台中我遇到了以下错误:

  

未捕获的TypeError:无法读取属性&#39;提交&#39;为null

有人可以帮我吗?

1 个答案:

答案 0 :(得分:2)

据我所知,你不应该在视图中有多个标签。我建议你使用ajax来触发提交事件。但是,您甚至没有一个表单打开标记,只是一个复选框。

我可能需要更多信息,但根据我的理解,您需要在点击复选框时将数据提交给控制器。

我会这样做:

// Your view
<!-- CSRF Token -->
    <input type="hidden" name="_token" value="{{{ csrf_token() }}}" />
<!-- ./ csrf token -->

@foreach ($items as $item)
<input type="checkbox" name="{{$item->id}}" id="{{$item->id}}" value="{{$item->done}}" class="checkbox_click">
@endforeach

<script type="text/javascript">
    $(document).ready(function() {
        $('.checkbox_click').click(function(){                  
            var currentValue = $(this).attr("value");
            $.ajax({
                url: 'your/route',
                method: 'post',             
                data: {id: currentValue, _token: $('input[name="_token"]').val()},
                success: function(data){
                    alert(data);
                },
                error: function(){},
            });
        });         
    });
</script>

// Your controller
public function postIndex()
{
    if (Request::ajax)
    {
        $id = Input::get('id');

        return Response::json($id);
    }
}

// Your routes.php
Route::post('your/route', YourController@postIndex);