Переадресация при onclick на submit
Есть код:
<form method='POST'>
<input type='text'>
<input type='submit' onclick = 'f();'>
</form>
<script>
function f () {
document.location.href="http://yandex.ru";
}
</script>
Переадресации не происходит. Почему? Ведь сначала выполняется js-скрипт, и лишь затем - отправка данных на сервер, как, например, здесь:
<form method='POST' action='2.php'>
<input type='submit' onclick = 'f();'>
</form>
<script>
function f () {
alert(1); //выдаст 1, затем - обработка данных скриптом '2.php' (т.е., по сути, редирект на '2.php')
}
А в коде ниже - происходит, если для submit прописать return false;
<form method='POST'>
<input type='text'>
<input type='submit' onclick = 'f();return false;'>
</form>
<script>
function f () {
document.location.href="http://yandex.ru";
}
</script>
Объясните, пожалуйста. |
<input type='button' onclick = 'f();'>
<script>
function f () {
document.location.href="http://yandex.ru";
document.location.href="http://google.com";
}
</script>
Куда происходит переход? Отправку формы браузером считай за невидимую тебе вторую строчку js-кода с редиректом. |
Ни хера не понял.
Тем более, в твоём примере баттон. Так что там с моим кодом? :-) Объясни, пожалуйста, что происходит. |
Цитата:
Цитата:
|
В action формы и пишут урл куда она пойдет. Как это сделано во втором примере. Это НЕ редирект, это - цель - куда должен пойти запрос. Если экшн пустой, или вообще нет, то цель - URI. То есть текущий. Отправку формы можно запретить и послать на хуяндекс - но форма туда уже не придет.
|
Понял, ТС пожизненно не видел action, поскольку практикуется примитивный паттерн редиректить на самого себя. Форма отгружается в тот же скрипт который ее сгенерил, а чтобы спина не была белая редиректит после записи на самого себя. Увидев action первый раз в жизни он и подумал - редирект!
Меж тем в экшон можно написать search string, а форму отгружать методом post и получать на сервере и то и другое одновременно. <form action="/some/path/?some=value&an=other" method="post"> |
Я понимаю, почему идёт переадресация на Яндекс, если есть "return false;". Но почему этот скрипт:
document.location.href="http://yandex.ru"; НЕ выполняется, если "return false;" нет? |
Цитата:
Цитата:
|
Цитата:
|
Бля, ну потому и спросил, что не понял!:-/
Я же видел, что сначала js-скрипты выполняются, а потом отправка на сервер. Вот и удивился, думал, что переадресация по document.location.href раньше будет! |
| Часовой пояс GMT +3, время: 16:17. |