Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

setcookie с ajax

396
05 января 2012 года
SibBear
223 / / 27.07.2006
Как заставить setcookie работать при обращении к скрипту аяксом?
код простой
отправляем аяксом "name"
в php пишем
 
Код:
if ($_GET['name'] setcookie("name", $_GET['name'], time()+109500);


если на прямую к скрипту обратиться через строку - работает
если отправить name ответом аяксу и вывести на экран через alert - работает
но сам setcookie почему то куку не хранит.
В чем загвоздка?
271
05 января 2012 года
MrXaK
721 / / 31.12.2002
path попробуйте указать, 4й параметр у setcookie

а как вы проверяете, что кука не хранится? если сразу после установки обращаться к $_COOKIE, то там ничего и не будет, в него попадут установленные элементы после перезагрузки страницы..
и скобочки у вас не хватает после ($_GET['name'][COLOR="red"])[/COLOR]
396
05 января 2012 года
SibBear
223 / / 27.07.2006
в том и проблема куки - аякс не перегружает страницу, приходится при ответе от скрипта делать куку аяксом, а при отключенном js уже сеткуки.
скобка это просто на ходу писал, это не точное повторение кода :)
проверял просто выводом print_r($_COOKIE); и перегружал и всяко разно. обычным перегрузом ставит, а аяксом не хотит. Ну и ладно...
277
05 января 2012 года
arrjj
1.7K / / 26.01.2011
Цитата: MrXaK
path попробуйте указать, 4й параметр у setcookie



SibBear, попробуй, должно заработать.

244
05 января 2012 года
UAS
2.0K / / 19.07.2006
Когда-то давно (года 3 назад) была у меня подобная проблема. Решил тем, что после получения ответа с сервера вручную в JS обрабатывал состояние ответа и вручную устанавливал куки через JS.

Что-то типа http://operafan.net/forum/index.php?topic=6623.0, первый ответ.
396
05 января 2012 года
SibBear
223 / / 27.07.2006
Цитата: UAS
Когда-то давно (года 3 назад) была у меня подобная проблема. Решил тем, что после получения ответа с сервера вручную в JS обрабатывал состояние ответа и вручную устанавливал куки через JS.

Что-то типа http://operafan.net/forum/index.php?topic=6623.0, первый ответ.


у меня по тому же принципу сейчас сделано, после удачного ответа уже в js отправляю куку.

помогло добавление "/" четвертым параметром в setcookie.
хотя принципа я не понял, но работает...

12
06 января 2012 года
alekciy
3.0K / / 13.12.2005
Цитата: SibBear

помогло добавление "/" четвертым параметром в setcookie.
хотя принципа я не понял, но работает...


Потому что из песочницы работает.

396
06 января 2012 года
SibBear
223 / / 27.07.2006
Цитата: alekciy
Потому что из песочницы работает.



А правда, можете объяснить, что изменилось принципиально? все таки понимать охото, а не просто лупить все подряд. Практика показывает, что через год я опять в этот код полезу, и опять буду думать что да как...
В описаниях php не нашел толкового объяснения

12
06 января 2012 года
alekciy
3.0K / / 13.12.2005
Цитата: SibBear
А правда, можете объяснить, что изменилось принципиально? все таки понимать охото, а не просто лупить все подряд. Практика показывает, что через год я опять в этот код полезу, и опять буду думать что да как...
В описаниях php не нашел толкового объяснения


Когда на серверной стороне в php вызывается setcookie, то он просто в HTTP ответ добавляет заголовки которые рекомендуют (именно рекомендуют ибо куки на клиенте можно отлючить) браузеру установить определенные значения в куках. Если этот заголовок получен обычным путем, т.е. без JavaScript, то происходит установка значения. Но если все происходит из JavaScript через XmlHttpRequest, то возникают нюансы обусловленные тем, что JavaScript работает в песочнице и на запросы через него накладываются более жесткие условия чем на простые запросы. Просто потому что JavaScript это все же язык программирования с потенциальными опасностями, поэтому требуются ограничения. И вот на одно такое ограничение - некорректно заданный path, ты и натолкнулся.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог