Php 在Laravel4中将数据从数组显示到动态选择框(jQuery-AJAX)

Php 在Laravel4中将数据从数组显示到动态选择框(jQuery-AJAX),php,jquery,ajax,arrays,laravel,Php,Jquery,Ajax,Arrays,Laravel,我正在尝试使用jQuery实现一个动态选择框,但我遇到了一些问题。。。 我有一个“路由”来访问我的数据库并获取新选择框的数据: Route::get('contenidos/comboasign/{asignatura_id}', array('uses' => 'ContenidoController@comboAsignBloque')); 我的控制器: public function comboAsignBloque($asignatura_id) { if(Request

我正在尝试使用jQuery实现一个动态选择框,但我遇到了一些问题。。。 我有一个“路由”来访问我的数据库并获取新选择框的数据:

Route::get('contenidos/comboasign/{asignatura_id}', array('uses' => 'ContenidoController@comboAsignBloque'));
我的控制器:

public function comboAsignBloque($asignatura_id)
{
    if(Request::ajax()){
        $bloques = DB::table('bloques')->where('asignatura_id','=', $asignatura_id)->orderBy('nombre', 'asc')->lists('id','nombre');
        return json_encode(array("bloques" => $bloques));
    }
}
在我看来,我有表格和这个js:

$(document).ready(function(){
     // Obtenemos los datos del selecbox1

     $("#select_asignatura").change(function(e){
        e.preventDefault();

            var asignatura_id = $("#select_asignatura option:selected").val();

            // AJAX request
            $.get('comboasign/'+asignatura_id, function(data){
                // #select_bloque is the select where I want to show my new options
                var select = $('#select_bloque');

                select.empty();

                // select.html(data);

                var optionsarray = data.split(',');

                var seloption = " ";

                $.each(optionsarray, function(i){

                    seloption += '<option value="' + optionsarray[i] + '">' + optionsarray[i] + '</option>';
                    select.append(seloption);
                });

                  });
        });     
     });
我需要将此数组放入我的选择框中,但我无法找到如何。。。
非常感谢您的帮助。

首先,使用浏览器调试器检查您是否确实从$.get…返回了一些数据。。。。打电话

在返回JSON数据时,可以使用

$.getJSON('comboasign/'+asignatura_id, function(data){
这将自动将返回的JSON字符串数据转换为javascript数据类型,在您的案例中,当您使用

json_encode(array("bloques" => $bloques));
您还可以通过执行以下操作使返回的数据更易于访问

json_encode( $bloques );

您认为对象复制就是因为这个原因

var seloption = " ";

$.each(optionsarray, function(i){

    seloption += '<option value="' + optionsarray[i] + '">' + optionsarray[i] + '</option>';
    select.append(seloption);
换成

    var seloption = " ";

    $.each(optionsarray, function(i){

        seloption += '<option value="' + optionsarray[i] + '">' + optionsarray[i] + '</option>';
    )};
    select.append(seloption);

正如我在问题中所写,我已经返回了一些数据,但问题是我不知道如何正确地显示它。我尝试了你的“$.getJSON”,但没有得到任何响应…:请看,谢谢,但我的问题是,我不知道如何从我获得的数组中设置“value”id和“text”nombre…我知道了。。。我的问题出在控制器上。我必须使用这样的foreach创建一个数组:$bloque_id=DB::table'bloques'->其中'asignatura_id','=',$asignatura_id->orderBy'nombre','asc'->列出'id','nombre';foreach$bloque_id as$key=>$value{$resources[]=arraynombre=>$key,id=>$value;}$resources_JSON_array=JSON_encode$resources;返回$resources\u JSON\u数组;然后,在我的“js”中,我正确地调用每个值和文本:$.eachmyData,functioni{selpoption+=+myData[I].nombre+;select.appendselpoption;};我现在唯一需要解决的是,我正在获取一些复制的对象…:
    var seloption = " ";

    $.each(optionsarray, function(i){

        seloption += '<option value="' + optionsarray[i] + '">' + optionsarray[i] + '</option>';
    )};
    select.append(seloption);