我正在尝试将ID发布到我的某个控制器上,但我的工作没有用,我也不知道原因:
路线:
Route::post('/save-book','UploadController@save_book')->name('savebk');
控制器:
public function save_book(Request $request)
{
dd($request->all());
}
在视图中:
<a id="bksv" data-value="{{$uploads[0]->id}}" href="" >Save it!</a>
jquery:
$(document).ready(function() {
$("#svd").click(function(e){
var data = $("#bksv").data().value;
console.log(data);
$.ajax({
url: 'save-book',
data: {'id': data},
type: 'POST',
datatype: 'JSON',
success: function (response) {
},
error: function (response) {
}
});
});
});
有人可以帮忙解决问题吗?我不知道我有什么问题。 我认为我想要实现的目标是显而易见的。 在控制器中,我有一个数据库查询,我为此问题删除了它。
问题是:当我点击<a>
标签时,基本上没有任何事情发生,而value
正在记录控制台。
答案 0 :(得分:1)
某些解决方案:也许您有一个错误$.ajax
它不是一个函数,这意味着您正在使用缩小版本的jquery,因此$.ajax
将其删除在该缩小版本上。因此,请确保在脚本之上包含未压缩的jquery版本:
<script
src="https://code.jquery.com/jquery-3.2.1.js"
integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE="
crossorigin="anonymous">
</script>
所以你的解决方案:注意:你有一个TYPO $("#svd").click(function(e)
id
其bksv
不是svd
所以这是有效的:
<a href="#" id="bksv" data-value="32">Save it!</a>
<script
src="https://code.jquery.com/jquery-3.2.1.js"
integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE="
crossorigin="anonymous"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#bksv").click(function(e){
e.preventDefault();
var data = $("#bksv").data().value;
console.log(data);
$.ajax({
url: 'save-book',
data: {'id': data},
type: 'POST',
datatype: 'JSON',
success: function (response) {
},
error: function (response) {
}
});
});
});
</script>
在你的控制器中试试这个
public function save_book( )
{
dd(request()->all());
}
并确保您在ajax上的网址为/save-book
最终解决方案由于这是一个帖子请求,请确保您在请求时包含csrf令牌,否则您将无法与后端通话,因此在您的html表单中添加此字段:
<input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">
然后在你的ajax调用数据有效负载包括如下:
$(document).ready(function() {
$("#bksv").click(function(e){
e.preventDefault();
var data = $("#bksv").data().value;
console.log(data);
$.ajax({
url: '/save-book',
data: {'id': data, "_token": $('#token').val()},
type: 'POST',
success: function (response) {
},
error: function (response) {
}
});
});
});