我目前正在处理一个数据表,其中每个项目都有一个下拉菜单,您可以通过该菜单选择用于更改数据库中项目状态的选项。
我使用一个提交按钮触发该功能,该按钮显示数据库中该项目的当前状态(已标记或未标记)。
我的问题是无法将数据(下拉列表中的值)传递到控制器。即使尝试使用dd($request->all())
打印请求,也无法显示任何内容。
路线
Route::any('/mark_as_important/{id}', 'ServiceController@markAsImportant')->middleware('all_customer');
控制器
public function markAsImportant(Request $request, $id){
try{
dd($request);
DB::table('tubes')->where('TubeID',$id)->update(['LOG_important'=>1]);
return 'true';
}catch(\Exception $e){
return 'false';
}
}
查看
<button type='submit' id="button_{{$row['TubeID']}}" onclick="markAsImportant({{$row['TubeID']}})"
@if ($row['LOG_important'] == 1)
disabled>Marked Important</button>
@elseif ($row['LOG_important'] == 2)
disabled>Marked RnD</button>
@else
>Mark as</button>
<select name="flags" class="form-control" data-id='flag_field'>
@php
$sql = DB::table('flags')->select('id', 'Flag_Name')->get();
@endphp
@foreach ($sql as $row)
<option value='{{$row->id}}'>{{$row->Flag_Name}}</option>;
@endforeach
</select>
<script type="text/javascript">
function markAsImportant(id) {
$("#button_" + id).attr('disabled', 'true');
var flag_id = $(this).data("id")
$.get("/mark_as_important/" + id, function(success) {
if (success == 'true') {
$("#button_" + id).html('Marked');
// } else {
// alert('Something went wrong');
}
});
}
答案 0 :(得分:2)
要将jquery用于click事件并更改$('#button_' + id).html()
,您可以尝试类似的操作
$(`#button_${id}`).on('click', function() {
$(this).prop('disabled', true);
var flagId = $('.form-control').data('id');
console.log({ flagId: flagId, buttonDisabled: $(this).prop('disabled') })
// make sure something is actually coming through with the console.log()
$.ajax({
url: `/mark_as_important/${id}`,
type: 'GET',
dataType: 'json', // assuming its json
success: function(result) {
$(`#button_${id}`).html('Marked');
},
error: function(err) {
console.log(err);
}
})
});
答案 1 :(得分:1)
您正在向任何路线发出获取请求,该ID包含在网址中,因此您可以像这样抓取它:
$tubeId = request()->route('id');
但是我将路由定义为获取路由,并使用route parameters
获取数据