Переадресация при 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, время: 09:20. |