[英]How to successfully load data of a particular user or event into bootstrap modal in laravel using ajax?
我正在尝试将事件数据加载到 laravel 中的引导模式中,但它对我不起作用,因为我刚开始使用 ajax。请检查我做了什么
模态模板
<div class="modal fade" id="readmore" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Event Title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<!-- Read More Event-->
<div class="content">
<form>
@csrf
<div class="form-group">
<input type="text" name="" value="{!! $edit_event-> title !!}" class="form-control">
</div>
<div class="form-group">
<input type="text" name="" value="{!! $edit_event-> deadline !!}" class="form-control">
</div>
<div class="form-group">
<textarea class="form-control">{{$edit_event-> message}}</textarea>
</div>
</form>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
按钮
<button data-toggle="modal" title="Edit" class="eventinfo" data-id="{{ $msg->id }}" data-token="{{ csrf_token() }}"><i class="fa fa-pencil-square-o"></i>Edit</button>
Ajax 或脚本
<script type="text/javascript">
$(".eventinfo").click(function(){
var id = $(this).data("id");
var token = $(this).data("token");
$.ajax(
{
url: "/event/edit/"+id,
type: 'post',
dataType: "JSON",
data: {
"id": id,
"_method": 'POST',
"_token": token,
},
success: function (response)
{
$('.modal-body').html(response);
$('#exampleModal').modal('show');
}
});
console.log("It failed");
alert('failed');
});
</script>
路线
Route::get('/event/edit/{id}', 'EventController@edit');
Controller
public function edit($id){
$edit_event = Event::findOrfail($id);
if ($new_event) {
return response()->json(['edit_event'=> $edit_event,
]);
} else {
return response()->json(['status'=> 'error']);
}
}
请大家帮忙go一下怎么样? 我想使用 Laravel 将数据加载到引导模式中。谢谢
您的代码中出现了很多错误:
{!! $someVar !!}
{!! $someVar !!}
。 所以尽量避免它在任何情况下。 还有可用的@json
助手,您可以像<span id='@json($myId)'>
一样使用它。 有关详细信息,请参阅https://laravel.com/docs/7.x/blade 。200
。 这是任何 API 的反模式。controller 中的$new_event
参数也丢失了(未定义)。X-CSRF-TOKEN
header 来简化您的 jQuery AJAX 调用,如下所示:
$(document).ready(function() {
// Add CSRF token header on every ajax request.
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
});
在你的根模板中,然后简单地添加<meta name="csrf-token" content="{{ csrf_token() }}">
在你的<head>
和$.ajaxSetup
function 应该自动为你添加正确的 CSRF 令牌每个 ajax 请求。 HTTP header X-CSRF-TOKEN
被 Laravel 自动识别(它与在 POST 请求正文中发送_token
参数具有相同的 function)。
alert('failed');
line 将始终被调用,没有return
语句,也不会将其置于任何类型的失败回调中。success
回调中引入了一个可能的错误,因为您正在设置$('.modal-body')
内容,这将为具有此 class 的所有元素设置内容。我建议您开始调试 javascript function 并查看是否正在调用您的点击处理程序。 还要检查浏览器的 .network 选项卡,看看 ajax 请求是否正确执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.