2016-04-07 25 views
0

После недели проб и ошибок с большим количеством чтения здесь я все еще не могу получить эту работу.
Что я хочу: У меня есть сайт с 24 страницами. Каждый продукт доступен в «классическом» или «модерном». На каждой странице есть кнопка для переключения между одним и другим (отображение по-разному img). Если пользователь нажимает кнопку «Продукт» в «moderne», а затем переходит к продукту B, я хочу, чтобы они сразу увидели «современную» версию без повторного щелчка (по умолчанию это «классический»). Я думаю, СЕССИЯ - это именно то, что мне нужно.
Мой код (я использую session_start() в верхней части обеих страниц):Установить сеанс PHP с AJAX не работает

продукта Страница:

<?php 
$_SESSION["collection"] = ""; 

?> 

<script> 
function ClasstoMod(){ 
     $(".classique, .moderne").toggle(); // toggles the images, it's working 
     } 
</script> 
<script> 
$(document).ready(function() { 

$("#display-moderne").click(function() { 
     request = 
      $.ajax({ 
       url: "classtomod.php", 
       type: "post", 
       data: 'moderne' 
       }); 
     // callback handler that will be called on success 
     request.done(function (response, textStatus, jqXHR){    
     // log a message to the console 
     console.log("Hooray, it worked!");  });   
     // callback handler that will be called on failure 
     request.fail(function (jqXHR, textStatus, errorThrown){    
     // log the error to the console 
     console.error(    "The following error occured: "+    textStatus, errorThrown   );   }); }); 
}); 
</script> 
<html> 
<div id="display-moderne" class="classique" href="#" onclick="ClasstoMod();">Check out the new Moderne Line!</div> 
    <div id="display-classique" style="display:none;" class="moderne" href="#" onclick="ClasstoMod();">Return to our Classique Line!</div> 
</html> 

classtomod.php

<?php 
$_SESSION['collection'] = $_POST['data']; 

?> 

Продукт B, сейчас Я только пытаюсь повторить правильную «коллекцию», я буду работать над JS, чтобы отобразить правильное изображение позже!

<?php 
echo "Collection = " .$_SESSION['collection']; 
?> 

Журнал консоли выполнен успешно, однако эхо на странице B не отражает новую СЕССИЮ. Если я запустил его, как показано на рисунке, он просто перекликается с «Collection =»
Если я определяю $ _SESSION ['collection'] = "test" на странице A, Page B эхо "Collection = test", как ожидалось, так что часть за работой.
То, что я хочу, после того, как я нажимаю на # display-moderne для страницы B, чтобы эхо «Collection = moderne»

Я думаю, что я близок, любая помощь приветствуется!

+0

Вы упускаете 'session_start();' в PHP скриптах. – Barmar

+0

Возможно, вам захочется заглянуть в локальное хранилище или файлы cookie, если вам не нужна причина, чтобы сервер выполнял сеанс. – Rob

+0

@Barmar У меня есть session_start в верхней части всех страниц, до doctype. – user2877438

ответ

1

Отсутствует имя параметра POST в вашем вызове AJAX. Оно должно быть:

data: { data: 'moderne'} 

или

data: 'data=moderne' 
+0

ну, вот ты, я знал, что это что-то простое. СПАСИБО! отлично работает, теперь для отображения правильных div на основе сеанса. – user2877438

Смежные вопросы