我正在使用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成功删除诊所时,如何重新执行此循环。
答案 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函数了。