|
|
|
| Здравствуйте. Когда я бьюсь над какой-нибудь проблемой и все способы уже испробованы, а моего мозга не хватает - я пишу на этот форум. Поскольку только здесь мне дают свежие идеи.
Суть проблемы в том, что существует форма добавления комментария, из нее методом post передаются переменные в обработчик, при этом скрипт уходит на страницу обработчика и я возвращаюсь на страницу с формой мето-тегом meta http-equiv='Refresh' content='0; URL=index. При этом действии страница обновляется.
Проблема в том, что если нажать кнопку браузера назад, то мы попадаем на страницу обработчика и только при повторном нажатии на кнопку назад попадаем на страницу с формой. Чтобы решить эту проблему я сделал обработчик в одном файле с формой (то есть и обработчик и форма находятся в одном php документе), а также запретил браузеру кешировать страницу мета тегами: <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> и <META HTTP-EQUIV="Expires" CONTENT="-1">, но это решает проблему только отчасти.
Просто не выводится пустое окно обработчика, но по-прежнему, чтобы вернуться назад требуется дважды нажать кнопку браузера. Вопрос в том - как сделать предачу в обработчик без обновления страницы. Подскажите, пожалуйста. Я думаю, что, наверное, возможно средствами javascript или ajax , но не уверен.
Заранее спасибо. | |
|
|
|
|
|
|
|
для: InfernuS
(18.12.2008 в 16:25)
| | Не совсем понятна идея с кнопками "назад", но если просто нужно отправить данные без обновления, то конечно нужен аякс. Есть масса вариантов. Вот один из. Если подойдет, могу помочь настроить. | |
|
|
|
|
|
|
|
для: Николай2357
(18.12.2008 в 19:49)
| | Спасибо что откликнулись. Я посмотрел код по ссылке, похоже, это не совсем то, что надо. Мне еще требуется вернуть результат обработчика на страницу с формой. Вы могли бы мне помочь. Я нашел код, который, судя по всему, мне подходит, но я не могу разобраться, т.к. плохо знаю ajax.
У меня есть форма моя:
<div align=center id=cerror></div>
<form action="obrobotchik.php" method="post" name="form_comm">
<input name='author' id='author' type='hidden' value='$_SESSION[user]'>
<p><label class='text_soon'>Введите текст комментария: <br></label><label class='menu-text'>
<br></label><textarea class='imput' name='text' id='text' cols='100' rows='7'></textarea></p>
<input name='id' id='id' type='hidden' value='$id'>
<p><input class='bat' name='sub_com' id='sub_com' type='submit' value='Комментировать'></p>";
</form>
|
И код скрипта:
function addComment()
{
//получаем ссылку на нашу форму
form = document.getElementById("form_comm");
//текст комментария
text = form.text.value;
//имя автора
name = form.author.value;
id = form.id.value;
//получаем ссылку на поле для вывода информации
erdiv=document.getElementById("cerror");
//добавляем запись
erdiv.innerHTML = "<img src='pr.gif' width='100' height='9'><br><p>Ваш комментарий обрабатывается...</p>"
//посылаем запрос на сервер
JsHttpRequest.query
(
"obrobotchik.php",
{
"text": text,
" id ": id ,
"author": name
},
function (result, errors)
{
//получаем ответ от сервера
if (result.err=='no')
{
//очищаем поле для вывода информации
erdiv.innerHTML = "";
// создаем новый блок Div
td = document.createElement("div");
// заполняем блок div информацией
td.className="comm";
result.text = regexp(result.text);
td.innerHTML = "<p class='comadd'>Комментарий добавил(а): <strong>"+result.name+"</strong><br>Дата: "+result.date+"</p><p>"+result.text+"</p>";
// получаем ссылку на блок для добавления комментариев
comtb = document.getElementById("comtab");
// добавляем комментарий в конец
comtb.appendChild(td);
// очищаем поле для ввода информации
form.text.value = "";
}
else
{
//если есть ошибки выводим их в поле информации
erdiv.innerHTML = result.log;
}
},
true
)
}
|
Я попробовал подогнать код под себя, но не знаю - правильно-ли. Могли бы вы проверить и сказать если что не так. И еще надо-ли в обработчике писать еще что-нибудь кроме заголовков запрета кэширования? | |
|
|
|
|
|
|
|
для: InfernuS
(18.12.2008 в 22:08)
| | Вообще то там всё возвращается, на то он и аякс. Вы напишите подробнее, что конкретно хотите вернуть и куда. Я подскажу тогда. А из этого кода ничего не понятно. Он ведь не Ваш... | |
|
|
|