По клику на кнопку отправляю несколько переменных с помощью fetch таким образом:
var button2 = document.querySelector("#tybl");
button2.addEventListener("click", function() {
//console.log("Кнопка нажата сохранить.");
var finc ='save';
var soloma = document.querySelector("#tl").innerHTML;
var kit = lad_id;
var par = [finc, soloma, kit];
var formData = new FormData();
for(var i=0;i<3;i++){
formData.append("par_"+i, par[i]);
}
fetch('../system/gen.php', {
method: 'POST',
body: formData
}).then(function(response){
console.log("Watch in mysql db");
//document.getElementById("boro").innerHTML = response.text();
}).catch(function(error){
console.log("Error");
});
});
на обработчик
php. В итоге не происходит запись в базу данных, потому что не инициализируется сессия.
Поискал в сети рекомендации, но толкового решения не нашел.
-
session_start();
прописана в самом верху
- В куках id сессии меняется ,как и должно быть.
- Прописал var_dump($_SESSION)
итог:
array(0) {
}
в ошибках php ругается на неопределенный индекс 'user_id' из
$_SESSION['user_id']
- что собственно логично, раз сессия не определяется.
структура обработчика php:
session_start();
var_dump($_SESSION);
require_once ('../func/tobase.php');//подключение к базе
if(isset($_POST))
{
$dt_j = $_POST['par_0']; //save
$da_is = $_POST['par_1']; //data
$da_ls = $_POST['par_2']; //id
if($dt_j == 'save'){
$nn_new = mysqli_query($link, "SELECT 1 FROM l_projects WHERE id='{$da_ls}'and author='{$_SESSION['user_id']}'");
$orage = mysqli_num_rows($nn_new);
if($orage != 0){
mysqli_query($link, "UPDATE `l_projects` SET `bl1` = '{$da_is}' WHERE `id`='{$da_ls}' and `author` = '{$_SESSION['user_id']}'");//
}
}
}
Убираю
author = '{$_SESSION['user_id']}'
и запись в базу идет. Что вполне логично, раз ошибка никак этому не мешает.
Что самое странное, аналогичные действия отправленные на этот же обработчик, но из jquery обычным ajax, прекрасно работают и запись производят. Мб дело в fetch или что я делаю не так?