用ajax重新执行php循环

时间:2017-03-21 07:17:36

标签: javascript php jquery ajax laravel

我正在使用laravel 5.4。

我的数据库里有很多诊所。我只是想检索所有的诊所,并在每个诊所都放一个删除按钮。每当用户点击删除按钮时,应从数据库中删除诊所,并在前端更新诊所。

这是我的代码。

template <typename T>
auto& container_pair(void) {
    using Choice = typename Derived::template ContianerChoice<T>;
    Choice& c = static_cast<Derived&>(*this);
    return c;
}

每当诊所被移除时,我都不想重新加载页面。那么,每当使用ajax成功删除诊所时,如何重新执行此循环。

1 个答案:

答案 0 :(得分:1)

更好的方法是使用javascript删除行。在隐藏加载程序的同一个函数中,您也可以从dom中删除表单。

像这样:

@foreach($doctor->clinics as $clinic)
    <div id="clinic{{$clinic->id}}">
        <form method="POST" 
            action="{{url('doctors/'.$doctor->id.'/removeclinic/'.$clinic->id)}}"
            id="formremoveclinic{{$clinic->id}}">
            {{csrf_field()}}
            <button class="btn btn-sm btn-danger pull-right">
                <span class="glyphicon glyphicon-remove"></span>
            </button>
        </form>
        <p class="text-muted">Clinic {{$i++}}</p>
        <p class="text-muted">{{$clinic->address}}</p>
        <hr>
        <script>
            $("#formremoveclinic{{$clinic->id}}").submit(function(e){
                $('#loading').show();
                e.preventDefault();
                $.ajax({
                    url: "{{url('doctors/'.$doctor->id.'/removeclinic/'.$clinic->id)}}",
                    type: "DELETE",
                    data: new FormData(this),
                    contentType: false,
                    cache: false,
                    processData:false,
                    success: function(data){
                        $('#loading').hide();

                        // Fade out and remove the form element
                        $("#clinic{{$clinic->id}}").fadeOut(300, function() {
                            $(this).remove();
                        });
                    },
                    error: function(data){
                        var errors = data.responseJSON;
                        console.log(errors);
                        $('#loading').hide();

                    }           
                });
            });
        </script>
    </div>
@endforeach

这样你就不必编写另一个ajax函数了。