PHP работает на стороне сервера, и весь PHP-код визуализируется перед отправкой чего-либо клиенту, поэтому hi
он отображается hello
.
Когда вы это сделаете
response
это в основном говорит, чтобы предупредить, response
если запрос ajax успешно завершен.
поскольку PHP не может отражать какие-либо изменения, сделанные на стороне сервера без обновления страницы, вы не можете видеть изменения, выполненные для сеанса сервера, но если вы обновите страницу, вы сможете увидеть измененное значение, потому что alert('<?= $this->session->userdata('greetings'); ?>');
оно снова отображается на сервере, и теперь его значение равно изменено на hi
. (Но в коде вы не сможете увидеть изменение сеанса, так как ваш индексный метод всегда устанавливает значение hello
. Измененное значение всегда будет перезаписано обновлением страницы, но если вы используете какой-либо другой метод контроллера в вашей системе, не устанавливает это конкретное значение сеанса, которое вы можете отразить в результате изменения.)
Почему это происходит в вашем коде?
Это происходит потому, что вы не используете alert(response);
свой запрос ajax. Вы правильно меняете сеанс сервера, и ответ также верен, но поскольку вы не используете, response
вы не можете увидеть измененное значение. Используйте ответ, и все должно быть хорошо.