我正在动态填充相互依赖的选择列表国家,地区等
我填充国家/地区,我通过jquery将国家/地区的ID发送到控制器,这会将ID发送给模型,这会返回与该国家/地区ID对应的区域。所以现在我通过json将那些对,id和region发送到jquery代码作为对回调函数的响应。
我可以在firebug中看到它返回对应于id和region名称的正确json对,但是选择列表中填充了这两个单词
对象对象 obect对象 等等 这对实际上对应于id和name,id和name等。 这样做是因为我没有打印语法 - >对于正确的对象,但我不知道如何在JQUERY代码中编写它。我可以在刀片页面@foreach $ x中以$ y等方式进行,但不能在jq中进行。所以这基本上就是问题。当你从Controller获得json响应时,如何在JQUERY中打印对象数组?
这是JQUERY CODE>
$(document).ready(function () {
$("#country").change(function (event) {
alert("You have Selected :: "+$(this).val());
var country = $(this).val();
$url = '{{URL::route('crud')}}';
$.post($url, {input:country},function(data){
$('#regions').empty();
$.each(data, function(key, value){
var option = $('<option/>', {'id':key, 'text':value});
$('#regions').append(option);
});
});
});
});
这是从Jquery
获取id的控制器public function getRegion()
{
$id = \Input::get('input');
$regiones = Region::returnRegion($id);
return \Response::json($regiones);
}
这是模型
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Session;
use DB;
class Region extends Model{
public static function returnRegion($id)
{
$regiones = DB::table('regions')
->select('id', 'nombre')
->where('id_idioma', '=', '3')
->where('id_pais', '=', $id)
->distinct()
->get();
return $regiones;
}
}
答案 0 :(得分:0)
乍一看,您似乎并没有告诉jQuery您希望返回JSON。成功结束后(函数(数据){})你只需要添加, "JSON"
即:
$.post($url, {input: country}, function (data) {
$('#regions').empty();
$.each(data, function (key, value) {
var option = $('<option/>', {'id': key, 'text': value});
$('#regions').append(option);
});
}, "json"); //This bit
这将导致jQuery转换来自json的响应。
希望这有帮助!
编辑:
使用lists()
而不是get()
将返回一个键对值数组,其中使用get()
将基本上嵌套在另一个数组中。所以,如果你要坚持使用get()
,你需要将你的循环改为:
$.each(data, function (row) {
var option = $('<option/>', {'id': row.id, 'text': row.nombre});
$('#regions').append(option);
});