如何使用 Jquery 和 ajax Laravel 5.4 在数据库中切换布尔值
How to Toggle Boolean Value in a Database Using Jquery and ajax Laravel 5.4
我创建了一个按钮来批准 table 中的一行,但一切似乎都只是为了检查 mysql 数据库布尔列
中没有任何变化
我的按钮
<td><button><a href="/getapprove"><span class="approva" name="appro">Approve</span></a></button></td>
这是我的脚本部分
@section('scripts')
<script type="text/javascript">
$(document).ready(function(){
$(".approva").click(function(e) {
e.preventDefault();
var id = $(this).closest('tr').attr('id');
$.ajax({
type:'POST',
url:'/getapprove',
headers: {'X-CSRF-TOKEN': '{{ csrf_token() }}' },
data: {"id":id},
success: function(data){
console.log('changed successfully')
}
});
});
});
</script>
@endsection
我的路线文件
Route::post('/getapprove','AdminalterdetailController@approve')->name('approved');
控制器功能:
'condition' 是我在 db
中的布尔列
public function approve(Request $request){
$rpt = Fielddetails::findOrFail($request->id);
if ($rpt->condition == 1){
$rpt->condition = 0;
} else {
$rpt->condition = 1;
}
$rpt->save();
我怎样才能使上面的工作正常?
我会这样做的..
布尔列 condition
在您的数据库 table 中需要是 tinyInt
类型。
Fielddetails.php
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'condition' // <-- make sure you have added this in your model file
];
routes/web.php
Route::get('/getapprove/{id}','AdminalterdetailController@approve')
->name('approved');
{id}
是您要更新的 table 的 ID。
控制器
/**
* Approve the data of the given id.
*
* @param integer $id
* @return Your-Response-Or-Redirect
*/
public function approve($id, Request $request)
{
$rpt = Fielddetails::findOrFail($id);
if ($rpt->condition == true) {
$rpt->update(['condition' => false]);
}
if ($rpt->condition == false) {
$rpt->update(['condition' => true]);
}
// return your success response or redirect
}
jQuery
<script type="text/javascript">
$('body').on('click', '.approva', function(e) {
e.preventDefault();
$.ajax({
type: 'GET',
url: $(this).attr('href'),
success: function(data) {
console.log(data);
},
error: function(err) {
console.log(err);
},
});
});
</script>
请注意每当用户想要点击批准时我处理点击事件的变化 link。
那是因为,我假设会有多个具有相同 link 的记录具有不同的 ID。
table.blade.php
<td>
<a href="{{ route('approved', $yourId) }}" class="button approva">
Approve
</a>
</td>
将 $yourId
替换为您的实际记录 ID。
参考,可以查看。它是关于使用 AJAX 删除记录,与你的问题不同,但它一定会帮助你。
快乐编码。干杯..
我创建了一个按钮来批准 table 中的一行,但一切似乎都只是为了检查 mysql 数据库布尔列
中没有任何变化我的按钮
<td><button><a href="/getapprove"><span class="approva" name="appro">Approve</span></a></button></td>
这是我的脚本部分
@section('scripts')
<script type="text/javascript">
$(document).ready(function(){
$(".approva").click(function(e) {
e.preventDefault();
var id = $(this).closest('tr').attr('id');
$.ajax({
type:'POST',
url:'/getapprove',
headers: {'X-CSRF-TOKEN': '{{ csrf_token() }}' },
data: {"id":id},
success: function(data){
console.log('changed successfully')
}
});
});
});
</script>
@endsection
我的路线文件
Route::post('/getapprove','AdminalterdetailController@approve')->name('approved');
控制器功能: 'condition' 是我在 db
中的布尔列public function approve(Request $request){
$rpt = Fielddetails::findOrFail($request->id);
if ($rpt->condition == 1){
$rpt->condition = 0;
} else {
$rpt->condition = 1;
}
$rpt->save();
我怎样才能使上面的工作正常?
我会这样做的..
布尔列 condition
在您的数据库 table 中需要是 tinyInt
类型。
Fielddetails.php
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'condition' // <-- make sure you have added this in your model file
];
routes/web.php
Route::get('/getapprove/{id}','AdminalterdetailController@approve')
->name('approved');
{id}
是您要更新的 table 的 ID。
控制器
/**
* Approve the data of the given id.
*
* @param integer $id
* @return Your-Response-Or-Redirect
*/
public function approve($id, Request $request)
{
$rpt = Fielddetails::findOrFail($id);
if ($rpt->condition == true) {
$rpt->update(['condition' => false]);
}
if ($rpt->condition == false) {
$rpt->update(['condition' => true]);
}
// return your success response or redirect
}
jQuery
<script type="text/javascript">
$('body').on('click', '.approva', function(e) {
e.preventDefault();
$.ajax({
type: 'GET',
url: $(this).attr('href'),
success: function(data) {
console.log(data);
},
error: function(err) {
console.log(err);
},
});
});
</script>
请注意每当用户想要点击批准时我处理点击事件的变化 link。
那是因为,我假设会有多个具有相同 link 的记录具有不同的 ID。
table.blade.php
<td>
<a href="{{ route('approved', $yourId) }}" class="button approva">
Approve
</a>
</td>
将 $yourId
替换为您的实际记录 ID。
参考,可以查看
快乐编码。干杯..