Вставьте флажки в функцию успеха ajax на основе результата предыдущего выпадающего списка

Я использую рюкзак Laravel, и я немного застрял прямо сейчас:

-> Я хотел загрузить несколько флажков из таблицы на основе предыдущего результата выпадающего списка.

Например, у меня есть поле под названием exercise_type который является раскрывающимся и все параметры в раскрывающемся списке хранятся в таблице, и каждый exercise_type имеет 10 упражнений, связанных с этим.

увидеть изображение стола

Вот value в таблице есть exercise_type

и каждый value имеет еще 10 значений.

вот как я добавляю это exercise_type поле в Crudcontroller.

$this->crud->addField([ // select_from_array
        'name' => 'exercise1_type',
        'label' => "Exercise 1",
        'type' => 'select2',
        'entity' => 'Exercise_group',
        'attribute' => 'value',
        'model' => 'App\Models\Exercise_group',
        //'allows_null' => false,
        'attributes' => [ 
        'id' => 'exercise',
        'OnChange' => 'getexercise()',
        ]

        // 'allows_multiple' => true, // OPTIONAL; needs you to cast this to array in your model;
    ], 'update/create/both'); 

Я могу загрузить значения из таблицы до здесь.

А затем я переопределил представление создания представления и добавил это, чтобы добавить флажки в функцию успеха ajax.

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">

function getexercise(){
    var exercise = $('#exercise').val();
    alert(exercise);
    $.ajax({
    url : "../../getexercise",
    type : "POST",
    data : { id : exercise },
    success: function(response){

        // what to put here to bring checkboxes with the name of exercises 
           as in table
    }
    });
};

Вот мой маршрут:

Route::post('/getexercise','BlahController@getexercise');

А вот и мой BlahController.php

public function getexercise(Request $request){
    $id = $_POST['id'];

    $exercises = Exercise_group::where('id', $id)->first();
    $exercise_id = $exercises->id;
    $exercise_1 =  $exercises->exercise1;
    $exercise_2 = $exercises->exercise2;
    $exercise_3 = $exercises->exercise3;
    $exercise_4 = $exercises->exercise4;
    $exercise_5 = $exercises->exercise5;
    $exercise_6 = $exercises->exercise6;
    $exercise_7 = $exercises->exercise7;
    $exercise_8 = $exercises->exercise8;
    $exercise_9 = $exercises->exercise9;
    $exercise_10 = $exercises->exercise10;


    return response()->json([
    'exercise_id' => $exercise_id,
    'exercise1' => $exercise_1,
    'exercise2' => $exercise_2,
    'exercise3' => $exercise_3,
    'exercise4' => $exercise_4,
    'exercise5' => $exercise_5,
    'exercise6' => $exercise_6,
    'exercise7' => $exercise_7,
    'exercise8' => $exercise_8,
    'exercise9' => $exercise_9,
    'exercise10' => $exercise_10,
    //'state' => 'CA'

]);
}

Я не могу добавить флажки в функции успеха AJAX все работает просто отлично. Я пробовал эти ссылки, но они не работают как таковые:

link1

link2

РЕДАКТИРОВАТЬ::

Теперь флажки работают так:

$.each(response, function (key, value) {

                var li = $('<li><input type="checkbox" name="' + key + '" id="' + key + '"/>' +
                           '<label for="' + key + '"></label></li>');
                li.find('label').text(value);

                $('#wkslist').append(li);
                console.log(value);
                $('#exercise_detail').val(value);
            });

но они не показываются хорошим способом, поэтому, если я хочу добавить эти значения флажков в другое раскрывающееся меню в рюкзаке, как я пытаюсь в примере, но не работает:

$('#exercise_detail').val(value);

$this->crud->addField([   // Select2Multiple = n-n relationship (with pivot table)
        'name' => "exercise1_type_detail",
        'label' => "Exercise 1 : Detail",
        'type' => 'select2_multiple',
        'attributes' => [ 
        'id' => 'exercise_detail',
        //'OnChange' => 'getexercisedetail()',
        ],

    ],  'update/create/both');

1 ответ

В вашем ajax-запросе добавьте свойство dataType: 'json'

Предполагая, что ваш JSON выглядит следующим образом,

[{'exercise_id' : 'Barbel',
'exercise1' : 'Flat',
'exercise2' : 'Incline',
'exercise3' : NULL,
'exercise4' : 'Flat',
'exercise5' : NULL,
'exercise6' : 'Flat',
'exercise7' : 'Barbel',
'exercise8' : 'Flat',
'exercise9' : 'Barbel',
'exercise10' : 'Flat'}]

и внутри успеха добавьте следующие строки кода.

if(response){
    var data = response[0];
    for(var i = 1; i< 10; i++){
       if(data['exercise'+i]){
        str = '<input type="checkbox" class="exercise+'i'" /> data['exercise'+i] ';
         $("#container").append(str);
       }
    }
}

Приведенный выше пример будет работать для вас. добавьте dataType: 'json' в ваш запрос $.ajax.

Другие вопросы по тегам