我有3个选择字段,sites
,areas
,devices
我需要根据在sites
和areas
中选择的内容过滤设备列表,因此列表将仅包括来自该站点和该区域的设备。
使其仅适用于areas
,但在JS
中尝试为sites
传递另一个变量时出现错误500
路线:
Route::get('devices/workarea/{work_area_id?}/{site_id?}','DevicesController@getDevicesByArea')->name('devices.byArea');
字符串
控制器:
public function getDevicesByArea($work_area_code = NULL) {
$devices = array();
if($work_area_code != NULL){
$workArea = WorkArea::find($work_area_code);
if($workArea) {
$devices = Device::selectRaw('id, CONCAT(device_alias) as work_device')
->where('belongs_to_work_area_id',$work_area_code)
->get()
->pluck('work_device', 'id');
}
}
return json_encode($devices);
}
型
JQuery:
$(document).ready(function () {
$("#area_id").on('change', function(){
var area_id = this.value;
var site_id = $('#site_id').val();
console.log(area_id)
console.log(site_id)
var deviceUrl = "{{ route('admin.devices.byArea') }}/" + area_id;
$.ajax({
url: deviceUrl,
success: function(result){
var html = '<option value="">Please select</option>';
result = jQuery.parseJSON(result);
console.log(result);
for(var key in result) {
html += '<option value="'+key+'">'+result[key]+'</option>';
}
$("#device_id").html(html);
$('#device_id').val('');
}
});
});
});
型
如何正确发送第二个需要的参数site_id
到控制器,并同时通过area_id
和site_id
过滤设备?
2条答案
按热度按时间vcirk6k61#
需要将参数添加到方法中。根据需要更新你的查询,同时对你在url中得到的两个值的输入值进行清理。
字符串
jQuery
您需要将参数添加到url中,以便能够发送到方法。
型
z6psavjg2#
路线
字符串
控制器中的代码
型
jQuery代码
型