Изменять переменную session в onclick

у меня есть 2 изображения, идея состоит, в том, чтобы кликнув в одном из них, я сохранял в переменной session присоединенная категория. Я искал информацию и пытался с ajax, но загадочно мне возвращает... код... не переменная, или же... что-то плохое. Код: я храню в архиве gestionar.php

        function modificarValor(valor){
           var url = 'b_categoria.php';
           $.ajax({
              type: 'POST',
              url: url,
              data: {valor},
              success:function(data){
              console.log("Valor Variable : "+ data);
             }
           });
          } 

        <div class="marco_central2">
          <div style="float:left;padding:10px;padding-top:184px;">
              <a href="/ACCE/adelante"  class="reload_link" onclick="modificarValor(1)">
              <?php echo $this->Html->image('menu/HIT-CATEGORIA-2.png'); ?></a>
          </div>
          <div style="float:right;padding:10px;padding-top:184px;">
              <a href="/ELEC/adelante"  class="reload_link" onclick="modificarValor(2)">
              <?php echo $this->Html->image('menu/HIT-CATEGORIA-1.png'); ?></a>
          </div>
        </div>

я храню в архиве b_categoria.php

<?php
$valor = $_POST['valor'];
session_start();

switch ($valor) {
    case 1:
        $_SESSION['categoria_actual'] = "accesorios";
        echo 'Accesorios';
        break;
    case 2:
        $_SESSION['categoria_actual'] = "servicios";
        echo 'Servicios';
    break;
}

?>

Я довожу до сведения, что приложение сделано в cakephp 1.3 очень старое, что они разработали в месте, где я работаю., и есть какие-то php encriptados, разработчики исчезли годы назад. Я буду благодарен за любую помощь!

1
задан 24.01.2017, 17:30
0 ответов

Относительно сервера, если просьба возвращает тебе тот же html страницы, он, потому что он не входит ни в один из случаев тебя switch-case. Смоги быть, потому что стоимость, содержавшая в твоей переменной $valor к нему отнеслись как один string вместо integer что является тем, что ты стараешься сравнивать в switch.

Сделай один var_dump($valor) и обеспечь себе, что содержит твою переменную и какого типа это перед тем, как делать любое последующее сравнение. Если ты только нуждаешься в том, чтобы работать с целыми числами, попробуй parsear стоимость в целое число переходить того, чтобы быть необходим.

В конце концов, добавляет один default в тебя switch-case чтобы посылать назначенный по умолчанию ответ, если ни одна из стоимости не совпадает с твоим сравнением. Наша работа как программисты также состоит во вмещении самого большего числа возможных случаев, чтобы предотвращать нежелательное поведение.

Относительно клиента; добавляет callback ошибки в твою просьбу ajax, из-за которого не всегда все цвет розы:

success: function() { ... },
error: function(err) { console.error(err) } 

Проверь довольно как дела посылая данные о просьбе, если ты сосредотачиваешься хорошо на функции, которую содержит ajax, в вопросах ecmascript5, ты перемещаешь ошибочную стоимость в параметр data; data: {valor}.

Используй такого JSON как стандарт в каждой просьбе, которую ты делаешь, так стороны сервера как клиента, добавь параметры contentType: 'application/json' и dataType: 'json' чтобы убеждаться в этом.

Проверь с твоего браузера состояние просьбы, когда он входит и выходит, обрати внимание, как посланы данные, и какой ответ ты получаешь от сервера.

Это вопрос debuguear и анализировать, рано или поздно ты находишь шутку.

1
ответ дан 03.12.2019, 17:31