Как принять данные js и записать их в БД?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
levy
Сообщения: 3
Зарегистрирован: 2022.04.21, 18:43

Как принять данные js и записать их в БД?

Сообщение levy »

Есть страница update с нее с помощью send.Beacon отправляю post id, чтобы потом по этому id найти запись в БД и изменить в ней переменные. Где и как принять этот id, и как на сервере выполнить php для записи?

Код скрипта:

Код: Выделить всё

function changeEdit(){
var id = '<?= $model->id?>';
var data = {id:id};
navigator.sendBeacon(/*куда отправлять?*/,data);
};
window.addEventListener('unload', chandeEdit);
А вот что делать дальше вообще не понимаю, как просто из формы записать данные знаю, а вот как фоном сделать запись некоторых переменных вопрос. Если есть какие-либо подробные примеры реализации, буду очень благодарен.
terrarium volition
Сообщения: 93
Зарегистрирован: 2021.07.15, 21:22

Re: Как принять данные js и записать их в БД?

Сообщение terrarium volition »

Поищите в теле POST запроса.
Примеров в сети миллион. $_POST вам в помощь
levy
Сообщения: 3
Зарегистрирован: 2022.04.21, 18:43

Re: Как принять данные js и записать их в БД?

Сообщение levy »

В контроллере создал action:

Код: Выделить всё

public function actionEdit() {
$id = Yii::$app->request->post('id');
$sql = 'UPDATE report SET edit_on = 1 WHERE id = '.$id;
$connection = \Yii::$app->db->createCommand($sql)->execute();
}
Соответственно изменил в скрипте

Код: Выделить всё

function changeEdit(){
var id = '<?= $model->id?>';
var data = {id:id};
navigator.sendBeacon("http://localhost/report/edit",data);
};
window.addEventListener('unload', chandeEdit);
Однако почему-то скрипт не видит эту страницу и выдает ошибку 404.
terrarium volition
Сообщения: 93
Зарегистрирован: 2021.07.15, 21:22

Re: Как принять данные js и записать их в БД?

Сообщение terrarium volition »

levy писал(а): 2022.05.19, 13:10 В контроллере создал action:

Код: Выделить всё

public function actionEdit() {
$id = Yii::$app->request->post('id');
$sql = 'UPDATE report SET edit_on = 1 WHERE id = '.$id;
$connection = \Yii::$app->db->createCommand($sql)->execute();
}
Соответственно изменил в скрипте

Код: Выделить всё

function changeEdit(){
var id = '<?= $model->id?>';
var data = {id:id};
navigator.sendBeacon("http://localhost/report/edit",data);
};
window.addEventListener('unload', chandeEdit);
Однако почему-то скрипт не видит эту страницу и выдает ошибку 404.
Я не понимаю, что вы тут написали, в сети через $.ajax миллион способов передать данные.
По фреймворку тоже полно инфы. Почитайте, разберитесь.

И ещё совет: если хотите получить ответ, то изложите свою боль в виде вопроса.
Ответить