Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   из окна сообщения на новую страницу (https://javascript.ru/forum/dom-window/6718-iz-okna-soobshheniya-na-novuyu-stranicu.html)

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

Цитата:

Сообщение от Bono
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

Цитата:

Сообщение от PeaceCoder (Сообщение 38275)
Так тебе надо данные на 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

Цитата:

Сообщение от PeaceCoder (Сообщение 38332)
После потправки формы скрипты не работают. ед выход это как ты сказал через перенаправление или же ajax

нифига, Вы не поняли, обрабатываем данные если есть $_POST и выводим туже страницу, только адрес у нее теперь не note.php, а note.php?submit. Не надо меня путать:nono:

Цитата:

Сообщение от Bono (Сообщение 38341)
Вот я и проверяю через
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

Цитата:

Сообщение от Gozar
Не надо меня путать

А я не путаю ;)
Цитата:

Сообщение от Gozar
Вы не поняли, обрабатываем данные если есть $_POST и выводим туже страницу, только адрес у нее теперь не note.php, а note.php?submit.

Цитата:

Сообщение от Gozar
атем отправляем данные с указанием 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

Цитата:

Сообщение от Gozar (Сообщение 38389)

какой-то, го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

Цитата:

Сообщение от Bono (Сообщение 38398)
<script language="JavaScript">
[/php]

хотябы уберите:
language="JavaScript"

чтобы у Вас там не получалось.


Часовой пояс GMT +3, время: 13:35.