Php Laravel 7通知和;AJAX:方法markAsRead()不会在返回时更新结果
我正在实现一个下拉菜单,其中包含来自Laravel的7个通知的数据库通知。我希望用户能够在不重新加载页面的情况下取消通知。我的控制器方法是:Php Laravel 7通知和;AJAX:方法markAsRead()不会在返回时更新结果,php,ajax,laravel,notifications,laravel-7,Php,Ajax,Laravel,Notifications,Laravel 7,我正在实现一个下拉菜单,其中包含来自Laravel的7个通知的数据库通知。我希望用户能够在不重新加载页面的情况下取消通知。我的控制器方法是: public function markAsRead($id) { auth()->user()->unreadNotifications->where('id', $id)->markAsRead(); $notificationArray = array(); $user = Auth::user();
public function markAsRead($id) {
auth()->user()->unreadNotifications->where('id', $id)->markAsRead();
$notificationArray = array();
$user = Auth::user();
foreach ($user->unreadNotifications as $notification) {
$notificationArray[] = $notification;
}
return view("layouts/notifications_list", ["notifications" => compact("notificationArray")]);
}
我的AJAX:
$.ajax({
method: "GET",
url: ' {{ route('notifications.markNotificationAsRead', ['id']) }}'.replace('id', notificationId),
cache: false,
success: function(response) {
$('#notifications-dropdown').empty();
$('#notifications-dropdown').html(response);
},
});
我得到的是已渲染的值。它类似于行auth()->user()->unreadNotifications->where('id',$id)->markAsRead()代码>被忽略。
但是,当我刷新页面时,列表会更新。您的路线是什么样的<代码>'{{route(“…
可能有太多的空间。一如既往,请使用浏览器的DevTools/console/Network选项卡确保没有错误/发送到正确的URL调用函数没有问题。我使用dd进行了双重检查。问题是返回的列表是旧列表,好像没有进行任何更改。重定向后,正确的结果是s但是dom更新可能会出现问题。请在浏览器devtools的网络选项卡中或通过控制台检查ajax调用的响应。在成功函数中记录(响应),并查看响应是否包含ajax请求所针对的通知记录made@Donkarnash事实上,这就是我面临的问题工作时,它不会返回预期的输出。如果尝试$notificationsArray=$user->fresh()->unreadNotifications->all()
而不是foreach(),会发生什么情况。还可以使用dd()检查$notificationsArray中是否存在以$id接收作为路由参数的记录。您的路由是什么样子的?{route>(“…
可能有太多的空间。一如既往,请使用浏览器的DevTools/console/Network选项卡确保没有错误/发送到正确的URL调用函数没有问题。我使用dd进行了双重检查。问题是返回的列表是旧列表,好像没有进行任何更改。重定向后,正确的结果是s但是dom更新可能会出现问题。请在浏览器devtools的网络选项卡中或通过控制台检查ajax调用的响应。在成功函数中记录(响应),并查看响应是否包含ajax请求所针对的通知记录made@Donkarnash事实上,这就是我面临的问题如果正常工作,它不会返回预期的输出。如果尝试$notificationsArray=$user->fresh()->unreadNotifications->all()
而不是foreach,会发生什么情况。还可以使用dd()检查$notificationsArray中是否存在接收到作为路由参数的$id的记录