当我在视图中更改下拉列表的值时,我在控制器中使用ajax调用传递它以返回2个数组以更改laravel中同一视图中的2个其他下拉列表。
控制器代码为:
public function CreatGegCityAjax($id)
{
$offices = \App\office::where("city_id",$id)->orderBy('name','asc')->get()->pluck('name','id');
$chars = \App\Char::where("city_id",$id)->orderBy('name','asc')->get()->pluck('name','id');
return json_encode(array('offices' => "$offices",'chars' => "$chars"));
}
视图中的代码是
$('select[name="city_id"]').on('change', function() {
var cityID = $(this).val();
if(cityID) {
$.ajax({
url: '/admin/gegonos/ajax/city/'+cityID,
type: "GET",
dataType: "json",
success:function(data) {
$('select[name="office_id"]').empty();
$.each(data, function(key, value) {
$('select[name="office_id"]').append('<option value="'+ key +'">'+ value.offices +'</option>');
});
$('select[name="char_id"]').empty();
$.each(data, function(key, value) {
$('select[name="char_id"]').append('<option value="'+ key +'">'+ value.chars +'</option>');
});
}
});
}else{
$('select[name="office_id"]').empty();
$('select[name="char_id"]').empty();
}
});
这没有错误,但它不会在下拉列表中获取值。它显示'未定义'。 如何使用右下拉列表中的每个数组拆分json数据的值? 感谢
答案 0 :(得分:1)
在你的控制器中试试这个:
return response()->json(['offices'=>$offices, 'chars'=>$chars]);
请参阅此处有关Laravel json的回复:http://coursesweb.net/laravel/responses#anc_jre
console.log(data)
放入success:function
以在控制台中查看收到的响应,并根据其结构进行解析。答案 1 :(得分:1)
假设您收到来自控制器的json
响应,格式为
{
'offices' : {
'1' : 'name',
'2' : 'name'
},
'chars': {
'1' : 'name',
'2' : 'name'
}
}
您需要将成功回调函数更改为
success: function(data) {
$('select[name="office_id"]').empty();
if (Object.keys(data.offices).length) {
$.each(data.offices, function(key, value) {
$('select[name="office_id"]').append('<option value="'+ key +'">'+ value +'</option>');
});
}
$('select[name="char_id"]').empty();
if (Object.keys(data.chars).length) {
$.each(data.chars, function(key, value) {
$('select[name="char_id"]').append('<option value="'+ key +'">'+ value +'</option>');
});
}
}