Как передать представление переменной в контроллер с помощью функции JavaScript с помощью метода URL :: Action в laravel 4.2

Значение выбора назначается из раскрывающегося списка и передается в 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

 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;
}

это в angular js или angular 5

LDS 21.11.2018 08:10
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
99
1

Ответы 1

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

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

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

Вы, вероятно, получите сообщение об ошибке, потому что фасад URL-адреса 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;
}

Артур Самаркос, в вашем ответе ошибка в фигурных скобках. Я не смог ее определить. Можете ли вы исправить. Спасибо.

wow 23.11.2018 12:51

Они изменили код в соответствии с вашим кодом. bt его не работает. не могли бы вы объяснить все изменения, которые я должен сделать в коде

wow 23.11.2018 17:25

Что именно не работает. Расскажите подробнее.

Arthur Samarcos 23.11.2018 17:27

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

wow 23.11.2018 18:46

@wow Да, теперь вы не получите $ choice в качестве сегмента url, но вы можете использовать фасад запроса.

Arthur Samarcos 23.11.2018 19:11

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