Laravel 5.2动态下拉菜单选择不填充(javascript)

时间:2016-05-15 17:56:30

标签: javascript laravel select

我有两个选择国家和信息。 selected_country变量传递给getInfo(),它查询与该国家/地区匹配的所有行并返回deptname和id。 id是select中的option value并存储在数据库中,deptname是select中显示的文本。现在我的信息下拉列表是空的,我没有收到任何错误。

public function getInfo()
{
    $country = Input::get('selected_country'); 
    $info = Department::where('addressCountry', $country)->orderBy('country')->pluck('deptname', 'id');
    return response()->json($info);

}

路线

Route::get('related-info', ['as' => 'related-info', 'uses' => 'Auth\AuthController@getInfo']);

Javascript

$('#addressCountry').on('change', function (e) {
    var slots = $('#info');
    slots.empty();
    var selected_country = e.target.value;
    $.get("related-info?selected_country=" + selected_country, function (data) {
        slots.empty();
        console.log(data);
        $.each(data.slots, function (index, value) {
            slots.append('<option value="' + value.id + '">' + value.name + '</option>');
        });
    });
});

重新审视我的观点

<form class="form-horizontal" role = "form" method = "POST" action = "{{ url('/register') }}" > {!!csrf_field() !!}

<select class="form-control" name = "addressCountry" id = "addressCountry" ></select >

<select class="form-control" name = "addressProv" id = "addressProv" ></select >

<select id="info" class="form-control" name="info">
   <option value=""></option>
</select>

同样在我的写作部分

populateCountries('addressCountry', 'addressProv');

使用javascript文件来填充国家/地区和州,这个文件太大而无法在此处粘贴 http://pastebin.com/9XUTPEVY

编辑:在getInfo而不是视图中返回json响应后,如果我直接导​​航到related-info?selected_country=Ireland,它将显示每个响应的ID和名称。如果我转到/register并在下拉列表中选择爱尔兰,则下拉列表不会填充,但firedebug中网络控制台中的响应选项卡会显示每个的ID和名称。在选择爱尔兰时,我还将console.log(data);更改为alert(data)弹出窗口显示[对象对象]。

以下是输出的3个屏幕截图 http://imgur.com/a/jEfuu

2 个答案:

答案 0 :(得分:0)

所有似乎都是正确的,除了你返回一个视图而不是一个Json对象作为响应。

尝试替换:

return view('auth.register', ['info' => $info]);

使用:

return response()->json($info);

答案 1 :(得分:0)

将javascript代码更改为:

$(&#39;#addressCountry&#39;)。on(&#39; change&#39;,function(e){

var selected_country = e.target.value;

$.get('related-info?selected_country=' + selected_country, function (data) {
    console.log(data);
    $('#deptInfo').empty();
    $.each(data, function (index, subcatObj) {

        $('#info').append('<option value="' + subcatObj.id + '">' + subcatObj.name + '</option>');

    });
});

})

我看到当你直接去网址时,你会去:related-info?selected_country =爱尔兰,但是在javascript中,你会去:    相关-信息的国家 =&#39?; + selected_country但我想你需要去:related-info? selected_country