Javascript 动态填充选择标记
有人能告诉我为什么代码不符合我的要求吗 我需要动态地填充几个select,我已经创建了一个函数,在这个函数中,select by参数被传递,并且通过一个对控制器的请求返回一个json,该json创建了每个选项。一切似乎都正常,但视图中的元素没有改变 我不确定是否以正确的方式将元素传递给函数 用于填充的功能选择:Javascript 动态填充选择标记,javascript,jquery,laravel,Javascript,Jquery,Laravel,有人能告诉我为什么代码不符合我的要求吗 我需要动态地填充几个select,我已经创建了一个函数,在这个函数中,select by参数被传递,并且通过一个对控制器的请求返回一个json,该json创建了每个选项。一切似乎都正常,但视图中的元素没有改变 我不确定是否以正确的方式将元素传递给函数 用于填充的功能选择: function fillSegmentsSelects(select_element, segment_id) { let route; segment_id != null ?
function fillSegmentsSelects(select_element, segment_id) {
let route;
segment_id != null ?
route = `/api/getSegments/${segment_id}` :
route = `/api/getSegments`;
$.get( route, function(result){
select_element.empty();
if(result.segments.length>0) {
result.segments.forEach(element => {
var data = {
id: element.id,
text: element.code
};
var newOption = new Option(data.text, data.id, false, false);
select_element.append(newOption);
});
select_element.trigger('change');
select_element.prop("disabled", false);
} else {
select_element.append(`<option value=""> - NONE - <option>`);
select_element.prop("disabled", true);
select_element.trigger('change');
}
}
);
在控制器中:
public function getSegments($segment_id = null)
{
if ($segment_id === null) {
$segments = Segment::where('CODE','LIKE','Rack%')->get();
return response()->json([
'segments' => $segments
]);
} else {
$segment = Segment::find($segment_id);
$segments = Segment::where('segment_id', $segment->id)->get();
return response()->json([
'segments' => $segments,
]);
}
}
这是拉威尔吗?显示您的路线定义。我的第一个猜测是查看触发更改的逻辑。在一种情况下,您触发一个更改,然后取消选择。在另一种情况下,禁用它,然后触发更改。我觉得这是倒退。我不确定javascript/浏览器将如何处理您试图在禁用的浏览器上触发更改事件的情况element@bassxzerorute很好(Route::get('getSegments/{segments\u id?}','ProductsController@getSegments')->name('getSegments');),@Taplar我可以忽略else的最后一个“触发器”,它只需要禁用select并显示没有选项,我将其保留,以便在第一个选项未启用的情况下禁用其他选项。保留或不保留它不是我的重点。如果尝试在禁用的元素上触发事件,浏览器可能不会执行任何操作。我还没有核实。但我会尝试确保在触发事件时启用元素。
public function getSegments($segment_id = null)
{
if ($segment_id === null) {
$segments = Segment::where('CODE','LIKE','Rack%')->get();
return response()->json([
'segments' => $segments
]);
} else {
$segment = Segment::find($segment_id);
$segments = Segment::where('segment_id', $segment->id)->get();
return response()->json([
'segments' => $segments,
]);
}
}