Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
useruser
61 / 62 / 29
Регистрация: 29.06.2015
Сообщений: 662
#1

Почему код работает не корректно?

07.03.2018, 13:18. Просмотров 152. Ответов 2
Метки нет (Все метки)

При нажатии на ссылку, должна исчезать строка. Но этого не происходит.
Эта строка исчезает только при обновлении страницы или повторном нажатии на любую ссылку.
Своего рода задержка на 1 шаг.
А нужно при первом нажатии на ссылку.

Использую jquery (ajax).
Что проверил:
Данные всегда приходят новые. Т.е .php скрипт выполняется.
Кука в после нажатия создается. Но её нет в переменной, что странно...
И она появляется в переменной после обновлении страницы или повторном нажатии на любую ссылку.
Ошибка скорее всего в файле functions.php.

Весь код - 100 строк с комментариями одним архивом (если тут читать не интересно)
https://cloud.mail.ru/public/4Tq4/F5trNATzN

Главный файл. Тут щелкаем по source_area и js скрипт вызывает 'actions.php?set_my_cookie передавая туда id ссылки.
PHP
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
<?php include_once (__DIR__.'/functions.php'); ?>
<html><head><title></title>
<meta http-equiv=Content-Type content="text/html;charset=UTF-8">
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>
<body>
<script>
$(document).ready(function() { 
$('#source_area').on('click', '.delete_link', function(){
$.ajax({
url: 'actions.php?set_my_cookie&id='+this.id,
success: function(data){$('#source_area').html(data);}
});
return false;
});
});
</script>
 
<div id="source_area">
<!-- Первоначальный вывод таблицы-->
<?php show_it(); ?>
</div>
 
</body>
</html>

actions.php. Сюда пришел запрос, вызываем функцию set_my_cookie и передаем туда id.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
//Функции
include_once (__DIR__.'/functions.php');
//Принимаемые данные
$id=$_GET['id'];
//Вызов функции
if (isset($_GET['set_my_cookie']))
{
set_my_cookie($id);
}
 
?>


functions.php Вот тут все и делаем. Вызываем set_my_cookie и передаем туда id
PHP
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
function set_my_cookie($id)
{
$cookie_string=''; //Пустая строка, по умолчанию
$cookie_time=31536000; // Время кук - год
 
//Смотрим - есть ли у пользователя кука
if (isset($_COOKIE['cookie_string'])) 
{
//Если есть - получаем её значение
$cookie_string=$_COOKIE['cookie_string'];
}
//Удаляем куку в любом случае т.к. она будет перезаписана
setcookie('cookie_string', '', 0, "/");
 
//Добавляем скрываемое значение в строку
$cookie_string=$cookie_string.$id;
 
//Ставим куку со списком всех скрываемых значений
setcookie('cookie_string', $cookie_string, time()+$cookie_time,"/");
//Куки поставлены - вызываем показ значений (таблицы)
show_it();
}
 
 
 
//Показ таблицы со значениями
function show_it()
{
$my_array=array('one','two'); //Массив со значениями
$cookie_string=$_COOKIE['cookie_string']; //Строка из куки
echo"$cookie_string"; //Ошибка??- при первом вызове тут пусто? Но в браузере я вижу куку!
echo'<table border="1" id="source_table">';
foreach ($my_array as $array_value)
{
//Если в строке из куки нет значения из массива - покажем её
if (strripos($cookie_string, $array_value)===false) echo'<tr><td>'.time().' '.$array_value.'</td><td><a href="" class="delete_link" id="'.$array_value.'">Удалить</a></td></tr>';
}
echo'</table>';
}
Почему код работает не корректно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2018, 13:18
Ответы с готовыми решениями:

Strripos работает не корректно
Есть xml файл, в кодировке UTF8 без бом. Кстати, все php скрипты, файлы у меня...

Скрипт проверки обратной ссылки работает не корректно
Здравствуйте. Нашел такой вот скрипт проверки обратной ссылки. Скрипт старый,...

Имеется скрипт вывода информации с игрового сервера все корректно работает, но хотелось бы уменьшить таймаут
Здравствуйте, требуется помощь или совет, имеется скрипт вывода информации с...

Почему не срабатывает код .
Не могу понять почему не срабатывает загрузка по URL ? &lt;form method=get &gt; ...

почему не работает?
&lt;?php $mysqli = new mysqli(&quot;localhost&quot;, &quot;root&quot;, &quot;&quot;, &quot;mybase&quot;);...

2
полудух
145 / 161 / 42
Регистрация: 15.03.2016
Сообщений: 987
07.03.2018, 14:44 #2
консоль в браузере почитайте (в лисе: ctrl + shift + c -> Консоль)
0
useruser
61 / 62 / 29
Регистрация: 29.06.2015
Сообщений: 662
07.03.2018, 22:43  [ТС] #3
Чисто вроде. Да и что она покажет? Js отрабатывает нормально. Php вроде тоже - тк данные новые идут.
Да и код достаточно простой.

Добавлено через 35 минут
Всё - мне подсказали.
Заголовки при AJAX не обновляются, а куки именно в заголовках и приходят.
Незначительно изменил код и заработало.

test.php
PHP
1
2
...
<?php show_it($_COOKIE['cookie_string']); ?>
functions.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Ставим куку
function set_my_cookie($id)
{
......................
//Куки поставлены - вызываем показ значений (таблицы)
show_it($cookie_string); //Передадим строку кук в функцию
}
 
//Показ таблицы со значениями
function show_it($cookie_string)
{
//Строка уже в функции - читать из массива кук не надо - всё уже есть
..................
}
Я и куку поставлю (до следующего обновления страницы или вызова js), но и передам значение того, что я ставлю в функцию.
Не хочет через массив кук - передам напрямую.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2018, 22:43

Почему не работает условие?
Всем привет! Есть код, который я сам написал. Я в php новичок, поэтому не...

Почему не работает селектор?
Здравствуйте! Не подскажете, почему не выводятся значения в селекторе? Есть...

Почему не работает is_int?
Всем привет! Надо фильтровать данные с формы на отрицательные, положительные и...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru