Как передать представление переменной в контроллер, используя функцию JavaScript, используя метод URL :: action в laravel 4.2 - PullRequest
0 голосов
/ 21 ноября 2018

Значение выбора назначается из выпадающего списка. Это значение передается в javascript myFunction в качестве параметра.И я хочу создать таблицу с использованием данных в базе данных.Код работает нормально и создает таблицу, когда я не передаю параметр.Но я хочу передать параметр. Помогите мне здесь, ребята.

Это мой код в поле зрения

 function myFunction($choice) {
    document.getElementById("demo").innerHTML = "You selected: " + $choice;

    $.get("{{ URL::action('CombinationController@readData',array('choice'=> 'choice'))}}", function (data) {
        $.each(data, function (i, value) {
            var tr = $("<tr/>");
            tr.append($("<td/>", {
                text: value.student_id
            })).append($("<td/>", {
                text: value.initials + " " + value.last_name
            })).append($("<input />", {
                type: 'checkbox', value: value.student_id
            }))

            $('#student').append(tr);
        });
    });
}

Это код в маршруте

 Route::get('readData/{choice}','CombinationController@readData');

Это мой CombinationController

public function readData($choice)
{
    if($choice==0) {
        $StuPS1ch1 = CombinationSubmits::join('student', 'combination_submits.student_id', '=', 'student.student_id')
    ->select('combination_submits.student_id', 'student.initials', 'student.last_name')
    ->where(['choice_1' => 'PS1'])
    ->get();
    }
    return $StuPS1ch1;
}

1 Ответ

0 голосов
/ 22 ноября 2018

Когда ваш вид отображается, php уже закончил компилировать весь код.К тому времени, когда ваша функция javascript будет запущена (на стороне клиента), ваш URL (созданный PHP на стороне сервера) уже будет строкой, поэтому вы не получите желаемого эффекта.

Если вы попытаетесь сгенерироватьURL-адрес с динамическими сегментами, например:

URL::action('CombinationController@readData',array('choice'=> $choice))

Вероятно, вы получите ошибку, потому что фасад PHP в PHP требует, чтобы переменная $ choice была доступна при рендеринге.

Я рекомендую изменить переменную на строку запроса, чтобы вы могли сделать что-то вроде этого:

function myFunction(choice) {
    document.getElementById("demo").innerHTML = "You selected: " + choice;

    $.get("{{ URL::action('CombinationController@readData') }}?choice=" + choice, function (data) {
        $.each(data, function (i, value) {
            var tr = $("<tr/>");
            tr.append($("<td/>", {
                text: value.student_id
            })).append($("<td/>", {
                text: value.initials + " " + value.last_name
            })).append($("<input />", {
                type: 'checkbox', value: value.student_id
            }));

            $('#student').append(tr);
        });
    });
}

Также вам придется изменить свой контроллер:

public function readData()
{
    $choice = \Request::input('choice');
    if($choice==0) {
        $StuPS1ch1 = CombinationSubmits::join('student', 'combination_submits.student_id', '=', 'student.student_id')
    ->select('combination_submits.student_id', 'student.initials', 'student.last_name')
    ->where(['choice_1' => 'PS1'])
    ->get();
    }
    return $StuPS1ch1;
}
...