Мирон Яцкевич
5629 сообщений
#13 лет назад
На одной страничке в начале кода происходит xmlhttprequest на ajax.php

И на той же странице внизу
JFactory::getSession MyValue = $session->get


В результате в MyValue попадает устаревшее или предыдущее значение переданное xmlhttprequest

Как это можно вылечить ?
Роман Беляев
16382 сообщения
#13 лет назад
Цитата ("mirekua"):
Как это можно вылечить ?

Я вот ничего не понял из вопроса.
Оффтопик
И очень хотелось съязвить по поводу "вылечить" из-за этого.
Мирон Яцкевич
5629 сообщений
#13 лет назад
Цитата ("frig"):
Я вот ничего не понял из вопроса.

Скажем xmlhttprequest передает 4, а в MyValue = $session->get попадает вначале null
Затем xmlhttprequest передает 7,а в MyValue = $session->get попадает 4

И т.д.
Мирон Яцкевич
5629 сообщений
#13 лет назад
Отрывок кода :


. . . .Язык Javascript . . . .
xmlhttprequest.open("GET", ajax.php?MyValue=MyVal, true);

. . . . . . . .
немного ниже на той же странице
. . . .Язык php . . . .
$MyValue = $session->get('MyValue');


ajax.php тривиален - отрывок :
$session->set('MyValue', $MyVal);
Роман Беляев
16382 сообщения
#13 лет назад
mirekua, если я правильно понял - вы выкидываете на страницу код с ajax запросом, а потом на этой же странице ждете, что значение будет как в том самом запросе?
Так проблема в том, что вы не понимаете как работает ajax. Ваш запрос выполнится уже ПОСЛЕ того как пользователь получит страницу и после того как вы на странице покажите ваше 'MyValue'. Т.е.
Генерите страницу
Выводите на нее 'MyValue'
Страницу получает пользователь
Выполняется ajax запрос
Устанавливается новое значение 'MyValue'

Надеюсь получилось понятно. Лучше, конечно, что-то почитать по теме. AJAX на самом деле штука тривиальная.
Мирон Яцкевич
5629 сообщений
#13 лет назад
Цитата ("frig"):
Ваш запрос выполнится уже ПОСЛЕ того как пользователь получит страницу и после того как вы на странице покажите ваше 'MyValue'.

Согласен. Хотя это и не очевидно так как запрос вызывается в ходе выполнения кода
И потом конструкции вроде Язык Javascript :
MyValue = <?php echo $MyValue; ?> т.е. как бы наоборот ведь работают на одной странице

Или тогда делать как-бы рекурсивный вызов самого себя ?

То есть положим файл в котором приведенный код называется MyFile.php
И тогда вместо ajax.php использовать MyFile.php
Евгений О.
2989 сообщений
#13 лет назад
mirekua не важно, что делает сервер и каким способом вы к нему обращаетесь. PHP выполняется на сервере и все, что он вам впишет в документ, происходит до отправки страницы пользователю. Если вы хотите синронизировать данные на сервере и в браузере вам необходимо либо перезагрузить страницу, либо, если используете ajax, обновить данные на страницы браузерными средствами, например javascript.
Вот этой строки MyValue = <?php echo $MyValue; ?> у клиента нет. У клиента есть, ну например MyValue = 4
Мирон Яцкевич
5629 сообщений
#13 лет назад
Цитата ("elosoft"):
PHP выполняется на сервере и все, что он вам впишет в документ, происходит до отправки страницы пользователю.

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