Задать вопрос
@nexus7777

Почему не записываются данные в сессию через Ajax в MODx?

$.ajax({
    url: '/ajax',
    data: 'action=transaction',
    type: 'POST'
});


$_SESSION['paymentstatus'] = '1';

Все происходит внутри MODx.
Если обратиться напрямую к $_SESSION['paymentstatus'] = '1', то сессия меняется.

В чем может быть причина?

UPD:
Содержимое сниппета в ресурсе /ajax

$action = filter_input(INPUT_POST,'action');
$res = '';
switch ($action) {
    case 'transaction': 
        $_SESSION['paymentstatus'] = '1';
        $res = '1';
        break;

if (!empty($res)) {
    die($res);
}
  • Вопрос задан
  • 143 просмотра
Подписаться 2 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
an-tar
@an-tar Куратор тега MODX
Full stack web developer
Что у вас по адресу /ajax, может быть сниппет? с одной строкой кода, что выше? Ничто не перехватывает /перезаписывает? например, плагин.
Ответ написан
DanArst
@DanArst
Гриффиндор в моде при любой погоде!
Ваш сниппет не отработает ваш ajax-запрос, потому что в js вы указываете action=transaction, а в php case 'transactionId':.
У вас банально разные action.
И зачем этот велосипед с filter_input, если можно просто использовать $_POST['action']?
Также я бы на вашем месте добавил в сниппет следующий код, чтобы откликаться только на ajax-запросы
if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы