【问题标题】:Ajax with Laravel Form CollectiveAjax 与 Laravel Form Collective
【发布时间】:2020-04-26 10:04:02
【问题描述】:
{!! Form::select('jobsList[]', $list_of_jobs, null, ['id' => 'job', 'class' => 'form-control' 'multiple', 'style' => 'width: 60%; margin-top: 10px;', 'disabled'=>'disabled']) !!}

我有这个表格,我正在尝试异步加载 $list_of_jobs 与我正在做的事情相比。我对 LaravelCollective Form 的工作方式有点困惑。谁能指出我将如何通过它?我已经有 ajax 调用从控制器中获取 $list_of_jobs

【问题讨论】:

    标签: laravel laravel-form


    【解决方案1】:
    //...
    {!! Form::select('jobsList[]', [], null, ['id' => 'job', 'class' => 'form-control' 'multiple', 'style' => 'width: 60%; margin-top: 10px;', 'disabled'=>'disabled']) !!}
    ..//
    

    使用 JQUERY、AJAX 填充您的选择框

    <script>
        $(document).ready(function() {
    
                //Make an Ajax request to a Laravel route
                //This will return the data that we can add to our Select element.
                $.ajax({
                    url: 'YOUR URL GOES HERE',
                    type: 'get',
                    success: function(data){
    
                        //Log the data to the console so that
                        //you can get a better view of what the script is returning.
                        console.log(data);
    
                        $.each(data, function(key, value){
                            //Use the Option() constructor to create a new HTMLOptionElement.
                            var option = new Option(key, value);
                            //Convert the HTMLOptionElement into a JQuery object that can be used with the append method.
                            $(option).html(value);
                            //Append the option to our Select element.
                            $("#job").append(option);
                        });
    
                    }
                });
    
            });
    </script>
    

    data 必须是对象数组[{}, {}, {}]

    [
      {'key' : 'foo', 'value' => 'bar'}, 
      {'key' : 'kosksi', 'value' => 'makrouna'}, 
      {'key' : 'lablebi', 'value' => 'kafteji'}
    ]
    

    更新

    如果您想在填充选择框时设置选中的option(s): 您需要在数据收集的每个对象中返回一个额外的属性selected : true|false

    [
      {'key' : 'foo', 'value' : 'bar', 'selected' : false}, 
      {'key' : 'kosksi', 'value' : 'makrouna', 'selected' : false}, 
      {'key' : 'lablebi', 'value' : 'kafteji', 'selected' : true}
    ]
    

    然后在success()ajax函数回调

    //...
    $.each(data, function(key, elem){
      //Use the Option() constructor to create a new HTMLOptionElement.            
      var option = new Option(elem.value, elem.key, false, elem.selected);
      //Convert the HTMLOptionElement into a JQuery object that can be used with the append method.
      $(option).html(elem.value);
      //Append the option to our Select element.
      $("#job").append(option);
    });
    //...
    

    【讨论】:

    • 非常感谢,在我修复了后端 json 数据后,它运行良好。我还有另一个问题 $list_of_jobs 用于显示之前选择和保存的变量,但现在它没有。任何想法为什么?
    • 而“选择”应该来自控制器?
    • 是的,来自控制器
    猜你喜欢
    • 2021-02-25
    • 2018-09-17
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 2016-02-17
    相关资源
    最近更新 更多