Страница 1 из 1

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

Добавлено: 2022.05.19, 11:50
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);
А вот что делать дальше вообще не понимаю, как просто из формы записать данные знаю, а вот как фоном сделать запись некоторых переменных вопрос. Если есть какие-либо подробные примеры реализации, буду очень благодарен.

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

Добавлено: 2022.05.19, 12:33
terrarium volition
Поищите в теле POST запроса.
Примеров в сети миллион. $_POST вам в помощь

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

Добавлено: 2022.05.19, 13:10
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.

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

Добавлено: 2022.05.19, 13:27
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 миллион способов передать данные.
По фреймворку тоже полно инфы. Почитайте, разберитесь.

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