通过jquery单击<a>
标签后,我试图更新数据库中的字段。
以下是HTML代码:
<a href="#" onclick="removeNumber()" id="notif-rmv" name="notif-rmv" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
<span class="glyphicon glyphicon-globe"></span>Notifications <span class="badge">{{count(auth()->user()->notifics)}}</span></a>
jQuery代码:
$('#notif-rmv').on('click', function () {
$.ajax({
method: 'POST',
url: notRmv,
data: { _token: token}
})
.done(function () {
});
});
路线和路线脚本:
<script>
var token = '{{ Session::token() }}';
var notRmv = '{{ route('not.rmv') }}';
</script>
Route::get('/notrmv', [
'uses' => 'PostController@notif_read_bdg',
'as' => 'not.rmv'
]);
并且控制器中有一条更新语句,无法通过jquery到达并且未运行。
public function notif_read_bdg()
{
$user = Auth::user();
$u_id = $user->id;
DB::table('notifs')->where('rec_uid', $u_id)->update(['badge_read' => 1]);
}
我怀疑Jquery代码有问题,因为我不太擅长,所以请您告诉我jquery代码是否存在问题?
答案 0 :(得分:1)
问题似乎是您从ajax使用POST方法调用,但是在Laravel中,只有GET请求的路由。因此,您必须在方法:'GET'中更改方法:'POST'或Route: :进入Route :: post。
您还可以在浏览器的“网络”标签中检查错误。
答案 1 :(得分:1)
这是GET请求路线。 您需要POST请求的路由。
Route::post('/notrmv', [
'uses' => 'PostController@notif_read_bdg',
'as' => 'not.rmv'
]);
答案 2 :(得分:0)
在ajax代码中,您要告诉jquery将请求作为POST请求发出,但是您的路由被定义为GET请求。按照惯例,如果您要更新资源,则应该在两个地方都使用PUT或PATCH。我通常使用PATCH只是因为它听起来更像是“更新”
Ajax调用如下
$.ajax({
method: 'PATCH',
url: notRmv,
data: { _token: token}
}).done(function () {
});
您的路线
Route::patch('/notrmv', [
'uses' => 'PostController@notif_read_bdg',
'as' => 'not.rmv'
]);