PHP + Ajax

Talker68

Новичок
Привет!
Недавно потребовалось к странице с формой (POST) прикрутить Ajax - по таймеру запрашивается кол-во новых документов в базе.
Так вот, столкнулся с такой проблемой - до того как произошел первый запрос по Ajax (запрос get-ом), форма ведет себя нормально, как и ожидается,
А если после Ajax-запроса отправить форму (submit) то содержимое $_POST[] на сервере оказывается пустым...

Я с Ajaxом до этого не сталкивался, вроде все по книге и ничего особо сложного там нет, но видимо чего-то недопонимаю. Подскажите, кто в курсе, как победить эту траблу?
 

Talker68

Новичок
В JS указать, что данные передаются через POST
указал POST - не помогло...
...
//Инициализируем соединение
Request.open(r_method, r_path, true);
//Отправляем запрос
if (r_method.toLowerCase() == "post") {
alert('debug - post!');
//Если это POST-запрос
//Устанавливаем заголовок
Request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
//Посылаем запрос
Request.send(r_args);
}
else {
alert('debug - get');
//Если это GET-запрос
//Посылаем нуль-запрос
Request.send(null);
}
...
 

Talker68

Новичок
Установил на Мозиллу расширение для просмотра отправляемых заголовков - поля формы отправляются всегда, в том числе и тогда когда на сервере php-скрипт показывает что $_POST[] пустой.
И еще только что проверил - в $_REQUEST всегда содержатся данные полей формы в том числе и тогда когда $_POST[] пустой.
Специально посмотрел - и $_POST[] и $_GET[] и $_COOKIE[] пусты, а $_REQUEST[] - заполнен
Какие будут соображения? Я что-то не пойму никак...
 

WMix

герр M:)ller
Партнер клуба
точно понимаешь разницу между GET и POST? а также что есть COOKIES и REQUEST?
или предполагаешь что это синонимы?
 

Talker68

Новичок
Согласно документации на php.su $_REQUEST - ассоциативный массив, содержащий $_GET, $_POST, and $_COOKIE
Вот мне и непонятно как так получается что $_GET, $_POST, $_COOKIE пустые а в $_REQUEST содержится то что по идее должно содержаться в $_POST...
Я веб-программированию только учусь так что много чего еще предстоит узнать..
 

WMix

герр M:)ller
Партнер клуба
а как ты проверял это? простой скриптик и заголовки скинь
 

Talker68

Новичок
Ну, простой скриптик выдрать сложновато честно говоря.
И я тут сейчас увидел что на соседней странице с другой формой, но с тем-же Ajax-запросом все работает правильно и до отработки Ajax-а и после.
Получается дело все-таки в этой конкретной форме, блин...

p.s. А проверял я просто - в самом начале скрипта просто вывожу на страницу содержимое этих массивов.
 

Talker68

Новичок
Второй раз споткнулся об эти же грабли, долго вспоминал в чем дело. Напишу тут для ясности.
В скрипте инициализации и проверки пользователя стояла очистка всех параметров (включая $_POST) если предыдущий скрипт <> текущему, при этом имя предыдущего сохраняется в $_SESSION. Соответственно, нужно предусмотреть чтобы при Ajax-запросе этот параметр не апдейтился.
 

keltanas

marty cats
Нужно предусмотреть, чтобы системные массивы не переписывались странным магическим образом непонятно где... короче, чтобы они вообще не переписывались.
 
Сверху