Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для useruser
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100

Почему куки не корректно работают при их установке через ajax?

10.03.2018, 21:22. Показов 1811. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно устанавливать куки с помощью ajax. При нажатии на ссылку, javascript отправляет данные php скрипту.
И возвращает ответ в result_area.

Что должен делать этот код. При нажатии на ссылку будет дважды вызван скрипт actions.php который будет изменять куки cookie_string. Итого в куки должно быть another_cookieanother_cookie.

При первом нажатии на ссылку - мы ничего не увидим на странице. Если мы посмотрим в браузер->куки->cookie_string там будет another_cookie.

При втором нажатии на ссылку - мы увидим на странице another_cookie. Если мы посмотрим в браузер->куки->cookie_string там будет another_cookieanother_cookie.

Как вы видите - вывод кук и работа скрипта не соответствует действительности.
В чем тут ошибка и как это исправить?

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<script>
$(document).ready(function() { 
$('#input_area').on('click', '.cookie_link', function(){
 
/*Первый вызов*/
$.ajax({
url: 'actions.php?set_my_cookie&id='+this.id,
success: function(data){$('#result_area').html(data);}
});
 
/*Второй вызов*/
$.ajax({
url: 'actions.php?set_my_cookie&id='+this.id,
success: function(data){$('#result_area').html(data);}
});
 
 
return false;
});
});
</script>
 
 
<div id="input_area">
<a href="#" class="cookie_link" id="another_cookie">Link</a>
</div>
 
<div id="result_area">
 
</div>
PHP
1
2
3
4
5
6
7
8
9
10
$id=$_GET['id'];
 
//Вызов функции
if (isset($_GET['set_my_cookie']))
{
$cookie_string=$_COOKIE['cookie_string'];
$cookie_string=$cookie_string.$id;
setcookie('cookie_string', $cookie_string, time()+31536000,"/");
echo $_COOKIE['cookie_string'];
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.03.2018, 21:22
Ответы с готовыми решениями:

Запись данных в куки при передаче через AJAX
Здравствуйте, подскажите пожалуйста как правильно передать/записать инфу в куки через AJAX? Мой код function purchaseBasketItem(ev) { ...

почему не работают куки на веб-сервере?
почему не работают куки на веб-сервере? На localhost этот код работает и все выводит: &lt;?php setcookie('userid', '1',...

JavaScript и cookies - куки при количестве БОЛЕЕ 19 не работают!
У меня куки (cookie) используются для того, чтобы при обновлении страницы значения массива сохранялись ! Значения каждой строки массива...

2
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
10.03.2018, 23:41
useruser,
Цитата Сообщение от useruser Посмотреть сообщение
Итого в куки должно быть another_cookieanother_cookie.
!==

Цитата Сообщение от useruser Посмотреть сообщение
Если мы посмотрим в браузер->куки->cookie_string там будет another_cookieanother_cookie.
?
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
12.03.2018, 09:55
useruser, вы не совсем понимаете жизненный цикл запроса от браузера к серверу и обработку ответа.

Во-первых в вашем примере второй ajax запрос не будет ждать выполнения первого - следовательно будут отправлены два запроса с одинаковыми куки, то есть при первом клике без куки, при втором оба запроса будут с cookie_string=another_cookie и т. д.

Во-вторых сервер присылает заголовок Set-Cookie и браузер только после этого установит куки и сервер эти куки увидит в $_COOKIE только при следующем запросе
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
 
$id = $_GET['id'];
 
//Вызов функции
if (isset($_GET['set_my_cookie'])) {
    $cookie_string = $_COOKIE['cookie_string'];
    $cookie_string = $cookie_string . $id; 
    setcookie('cookie_string', $cookie_string, time()+31536000, "/"); // заголовок браузеру установить куки
    echo $_COOKIE['cookie_string']; // здесь куки которые пришли в запросе !== $cookie_string
}
Добавлено через 5 минут
Ожидаемое вами поведение будет в примерно таком варианте
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<html>
  <head>
    <script src="https://unpkg.com/jquery" type="text/javascript"></script>
  </head>
<body>
 
<script>
$(document).ready(function() {
  $('#input_area').on('click', '.cookie_link', function(){
    var _this = this;
    
    /*Первый вызов*/
    $.ajax({
      url: 'actions.php?set_my_cookie&id=' + _this.id,
      success: function(data) {
        $('#result_area').html(data);
 
        /*Второй вызов*/
        $.ajax({
          url: 'actions.php?set_my_cookie&id=' + _this.id,
          success: function(data) {
            $('#result_area').html(data);
          }
        });
      }
    });
    return false;
  });
});
</script>
 
<div id="input_area">
  <a href="#" class="cookie_link" id="another_cookie">Link</a>
</div>
 
<div id="result_area"></div>
 
</body>
</html>
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
 
$id = $_GET['id'];
 
//Вызов функции
if (isset($_GET['set_my_cookie'])) {
    $cookie_string = $_COOKIE['cookie_string'];
    $cookie_string = $cookie_string . $id; 
    setcookie('cookie_string', $cookie_string, time()+31536000, "/");
    echo $cookie_string; 
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.03.2018, 09:55
Помогаю со студенческими работами здесь

Не работают скрипты в подгруженном через AJAX документе
Добрый день! Использую AJAX для подгрузки контента: function loadHTML(sURL) { var request=null; // пытаемся создать объект для...

PHP,AJAX,jq,Mysql работают через раз
Привет! Не могу разобраться, в чем ошибка. Вроде все работало, а сейчас перестало, и если срабатывает,то косячно вот PHP create.php ...

Не работают функции после загрузки элементов через AJAX
Привет! На сайте есть кнопка, при клике по ней через AJAX получаю input который размещаю во &quot;всплывающем окне&quot;, на этот...

Не работают некоторые запросы в БД из PHP через AJAX с HTML страницы
Делаю сайт отеля, где есть возможность сложного поиска по номерам отеля, который кстати говоря работает полностью. А также возможность в...

Не работают USB порты при установке
Так, все прив. тема избитая и уже излазил весь нет в поисках, но к результату не пришел... Ситуация такова - устанавливаю винду на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru