【发布时间】:2019-10-21 21:27:07
【问题描述】:
我正在使用 laravel 制作图书图书馆网站。我正在尝试添加书签功能。我试过在点击书签按钮时做类似的事情,页面号被发送到数据库并且它正在工作。问题是从控制器页面返回时重新加载导致书回到第 1 页。有没有什么方法可以在不重新加载页面的情况下将数据发送到数据库? 我知道 ajax 可以做到这一点,但我在我的应用程序中使用 JavaScript,我尝试用它部署 ajax 但没有运气。 我正在显示我的代码。任何好的建议都将受到高度赞赏。
我的javascript函数:
function bookmark()
{
book = '<?php echo $book->id ?>';
$.ajax({
type: "post",
url: "save_bookmark",
data: {b_id:book, p_no:count},
success: function(response){
console.log(response);
},
error: function(error){
console.log(error);
}
});
});
}
count 在脚本中定义。
我的路线:
Route::post("save_bookmark/{b_id}/{p_no}",'BookmarkController@create')->name('save_bookmark');
我的控制器:
public function create($b_id, $p_no)
{
$b=new bookmark;
$b->u_id=Auth::user()->id;
$b->book_id=$b_id;
$b->p_no=$p_no;
$b->save();
return response()->json([
'status' => 'success']);
}
我的html:
<li><a id="bookmark" onclick="bookmark()" >Bookmark</a></li>
注意:有一个导航栏,书签是其中的一部分。没有表单提交。
【问题讨论】:
-
我只是猜测一下,说你有一个
<form>元素,在那个表单元素中你有一个按钮。如果该按钮不是type="button",它将默认提交表单。你的表格有动作吗?因此,当您尝试进行 ajax 调用时,页面会重新加载。我相信当您单击按钮以保存页码时表单正在提交。 -
什么叫“书签”?而且您的路线似乎表明参数应该在 URL 中,但是(除非我弄错了)这不是您的 JS 正在做的事情。
-
每本书都有
bookmark功能吗?book = '<?php echo $book->id ?>';似乎是错误的(很可能)。你能分享更多你的前端代码吗?如果你有一个按钮,你可以给它一个数据属性(<button data-book="<?= $book->id ?>">Bookmark</button>然后你的 javascript 可以访问这个数据属性。