Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态填充选择标记_Javascript_Jquery_Laravel - Fatal编程技术网

Javascript 动态填充选择标记

Javascript 动态填充选择标记,javascript,jquery,laravel,Javascript,Jquery,Laravel,有人能告诉我为什么代码不符合我的要求吗 我需要动态地填充几个select,我已经创建了一个函数,在这个函数中,select by参数被传递,并且通过一个对控制器的请求返回一个json,该json创建了每个选项。一切似乎都正常,但视图中的元素没有改变 我不确定是否以正确的方式将元素传递给函数 用于填充的功能选择: function fillSegmentsSelects(select_element, segment_id) { let route; segment_id != null ?

有人能告诉我为什么代码不符合我的要求吗

我需要动态地填充几个select,我已经创建了一个函数,在这个函数中,select by参数被传递,并且通过一个对控制器的请求返回一个json,该json创建了每个选项。一切似乎都正常,但视图中的元素没有改变

我不确定是否以正确的方式将元素传递给函数

用于填充的功能选择:

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,
        ]);
    }
}