我有两个选择国家和信息。 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
答案 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