Вход

Просмотр полной версии : из окна сообщения на новую страницу


Bono
17.12.2009, 16:30
Есть вот такой код:
<input type="submit" value=" Сохранить результат " onClick="alert("Спасибо за участие!")">
При нажатии на submit появляется окно с сообщением 'Спасибо за участие!', а как сделать, чтобы при нажатии на "ок" происходил переход на другую страницу. (Например, submit находится на странице note.php, а после нажатия "ок" должен открыться index.php) ?


как вариант, например, можно вызвать функцию:
<script language="JavaScript">
<!--
function but1() {
alert("Спасибо за участие!"), top.location.href="index.php" } ;
//-->
</script>
...
<input type="submit" value=" Сохранить результат " onClick="but1()">

но вот ссылка почему-то не срабатывает

B~Vladi
17.12.2009, 16:48
language="JavaScript"
По какой книге учился? Сожги её.

<input type="submit" value=" Сохранить результат " onClick="alert('Спасибо за участие!'); location.href='http://domain.com/index.php'">

Bono
17.12.2009, 17:00
B~Vladi, не получается пройти по ссылке. остается та же страница

B~Vladi
17.12.2009, 17:00
Странно. Это во фрейме делается?

Bono
17.12.2009, 17:08
между прочим действительно странно. вставил на "чистый" лист - заработало, а на нужном не срабатывает.
Нет, у меня не фрейм

Bono
17.12.2009, 17:16
насколько я понял, дело вот в чем:
<form name="first" action="" method="POST">

но именно такой переход action мне нужен, так как скрипты с вычислениями находятся на этой странице, а данные туда передаются из заполненной формы(checkbox и button). То есть я ее заполняю, нажимаю submit, значения передаются в скрипт, где они обрабатываются и записываются в файл. хм... а что можно сделать в таком случае?

PeaceCoder
17.12.2009, 19:32
Так тебе надо данные на note.php передавать но пользователя послать на index.php?

Gozar
17.12.2009, 23:01
ajax-ом отправляете данные куда нужно, например в файл index.php, а после этого запускаете location.href='note.php' или наоборот, в общем подставить нужное, в итоге данные улетают в одну сторону, а пользователь в другую ;) или никуда не улетает, а получает ответ от ajax-а и выводит нужное уведомление: "Данные получены, вы купили корову, спасибо!"

Bono
18.12.2009, 09:19
Так тебе надо данные на note.php передавать но пользователя послать на index.php?
Да, именно так. Учитывая, что note.php - это та страница, на которой расположены и формы, с которых я беру данные, и скрипты для подсчета и кнопка Submit.

Gozar
18.12.2009, 13:18
для того чтобы это сделать нормальным способом, это нужно делать на сервере, т.е. в note.php проверять если есть $_POST['переменная'] из формы, то делать обработку формы, а потом:header("Location: index.php);, но так как Вы хотите делать это с помощью js и вариант с ajax Вас по какой-то загадочной причине не устраивает, то это можно делать так: грузим note.php c формой, затем отправляем данные с указанием action: note.php?submit, смотрим js-ом url :document.location.href и если он: note.php?submit отправляем пользователя на location.href = 'index.php'

PeaceCoder
18.12.2009, 13:50
Гозар. После потправки формы скрипты не работают. ед выход это как ты сказал через перенаправление или же ajax

Bono
18.12.2009, 14:09
Вот я и проверяю через
if(!empty($_POST))
После всей обработки вставил header("Location: http://net.ru/index.php");
В результате, когда я в строке браузера набираю
http://net.ru/note.php сразу же происходит редирект на index.php

Gozar
18.12.2009, 14:52
После потправки формы скрипты не работают. ед выход это как ты сказал через перенаправление или же ajax
нифига, Вы не поняли, обрабатываем данные если есть $_POST и выводим туже страницу, только адрес у нее теперь не note.php, а note.php?submit. Не надо меня путать:nono:

Вот я и проверяю через
if(!empty($_POST))
После всей обработки вставил header("Location: http://net.ru/index.php");
В результате, когда я в строке браузера набираю
http://net.ru/note.php сразу же происходит редирект на index.php
проверять нужно не просто $_POST, а POST['переменнаяИзФормы']
<input type="text" name="firstname">

if(isset($_POST['firstname'])){
//тут обрабатываем данные из формы ($_POST['firstname'])
header("Location: index.php");
}

PeaceCoder
18.12.2009, 15:08
Не надо меня путать
А я не путаю ;)
Вы не поняли, обрабатываем данные если есть $_POST и выводим туже страницу, только адрес у нее теперь не note.php, а note.php?submit.
атем отправляем данные с указанием action: note.php?submit, смотрим js-ом url :document.location.href и если он: note.php?submit отправляем пользователя на location.href = 'index.php'
Сам себя запутал ;) а вообще проехали я понял что ты имеешь ввиду. и видимо топикстартер уже тоже.

Bono
18.12.2009, 16:12
Короче делаю вот так:
<?
if(!empty($_POST['first'])) {
... //обрабатываю данные формы
<script language="JavaScript">
<!-- function but1() { //вывожу сообщение
alert('Спасибо за участие!')};
//-->
</script>
<?header("Location: http://net.ru/index.php");}?> //тут должен произойти переход на index.php
...
<form name="first" action="" method="POST">
...
<input type="submit" value=" Сохранить результат" onClick="but1()">

подскажите, где ошибка, редирект не происходит?

PeaceCoder
18.12.2009, 16:39
то что ты написал не сработает походу, т.к. браузер получает заголовок перенаправления и походу даже ничего не выполнит, а перейдет по адресу
Вывод сообщения спасибо за участи надо делать до отправки формы или же на index.php перехватывать сессионную переменную установленную при обработке данных и выводить сообщение, но проще сделать первым способом - перед отправкой,хот ятут если какая ошибка в данных, например неправильно чето заполнено то сообщение будет выскакивать независимо от этого...
а можно еще сделать через js

if (установлена переменная){
обработка
?>
вывод кода js в котором alert и location.href=...
<?
return;
}

вывод формы...

Gozar
18.12.2009, 16:53
<?php
if(!empty($_POST['first'])) {
... //обрабатываю данные формы
header("Location: http://net.ru/index.php");
}
?> //тут должен произойти переход на index.php


на index.php вешаете js скрипт, который смотрит откуда пришел юзер и если document.referrer == 'http://net.ru/note.php?submit' выводите свое сообщение:

<body>
<script type="text/javascript">
if(document.referrer == 'http://net.ru/note.php?submit'){ //вывожу сообщение
alert('Спасибо за участие!')
};
</script>


какой-то, гоVнокод получается, если принцип понятен, то доделаете сами, а вообще я бы еще мозгами пораскинул ;)

Bono
18.12.2009, 17:12
какой-то, гоVнокод получается, если принцип понятен, то доделаете сами, а вообще я бы еще мозгами пораскинул ;)

Ыыыыы))))))))))) действительно. че-то не работает:no:

Bono
18.12.2009, 17:37
все, заработало. сделал вот так:
if(!empty($_POST)) {
... //здесь обрабатываем данные из формы
header("Location: http://net.ru/index.php");
}?>
<script language="JavaScript">
<!--
function but1() {
alert('Спасибо за участие!')};
//-->
</script>

а ларчик-то просто открывался :)

Gozar
18.12.2009, 17:54
<script language="JavaScript">
[/PHP]

хотябы уберите:
language="JavaScript"
чтобы у Вас там не получалось.