Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 18.11.2017, 04:28
Интересующийся
Отправить личное сообщение для ivan899 Посмотреть профиль Найти все сообщения от ivan899
 
Регистрация: 16.11.2017
Сообщений: 24

Я уже проверил и все работает. Нужно просто выбрать из select обработчик и в зависимости от его выбора менять name в input вот и все.
Ответить с цитированием
  #42 (permalink)  
Старый 18.11.2017, 04:53
Интересующийся
Отправить личное сообщение для ivan899 Посмотреть профиль Найти все сообщения от ivan899
 
Регистрация: 16.11.2017
Сообщений: 24

Ладно я сам разберусь дальше.
Тему можно закрывать.
Ответить с цитированием
  #43 (permalink)  
Старый 18.11.2017, 05:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ivan899
Ну во первых и та и другая форма отправляет запрос методом post.
А это тогда как понимать?

Сообщение от ivan899
У одой формы идет:
/component/search/?search=текст
Это не POST, это GET запрос.

Вы пишите, что начали понемногу .... Ну так подумайте и над тем, что поисковые запросы передаются не POST, а GET методами, чтобы поисковые роботы их кешировали. Почему это выгодно для сайта думаю пояснять не надо.

Ну и поступать так, как это вы делаете, в смысле метод смены адреса и т.п., это не самое лучшее.

Впрочем как душе угодно, нет, так нет.
Ответить с цитированием
  #44 (permalink)  
Старый 18.11.2017, 10:59
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,705

Сообщение от ivan899
То что Nexus скинул код, он почему то не работает, там name не меняется, а вот action меняется
Я просто допустил ошибку.
Попробуйте так:
<html>
<head>
<meta charset="utf-8">
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
$(function() {
    var frm = $('form').submit(function() {
        if(!dst.val()) {
            alert('Выберите где искать');
            return false;
        }
    }),
    dst = $('#inselect').change(function() {
        frm.attr('action', this.value);
		frm.find('input[type="text"]').attr('name',$(this).find('option:selected').data('name'));
    })
});
</script>
</head>
<body>
	<form action="" method="post" name="select">
		<input name="search" type="text" placeholder="Поиск..." />
		<select id="inselect">
			<option value="" disabled="" selected>Где искать?</option>
			<option value="/search" data-name="search">Блог</option>
			<option value="/search-shop" data-name="searchword">Товары</option>
		</select>
		<input type="submit" value="Найти" />
	</form>
</body>
</html>
Ответить с цитированием
  #45 (permalink)  
Старый 18.11.2017, 14:38
Интересующийся
Отправить личное сообщение для ivan899 Посмотреть профиль Найти все сообщения от ivan899
 
Регистрация: 16.11.2017
Сообщений: 24

Nexus,
Спасибо вот теперь действительно работает как надо.
Только надо в
var frm = $('form#ID').submit(function()
добавить id в form ну или class кому как угодно, что бы проверять какая именно форма не заполнена. А то не дает отправить другие.
А так действительно все работает. Спасибо.
Ответить с цитированием
  #46 (permalink)  
Старый 18.11.2017, 14:54
Интересующийся
Отправить личное сообщение для ivan899 Посмотреть профиль Найти все сообщения от ivan899
 
Регистрация: 16.11.2017
Сообщений: 24

laimas,
Не знаю но она работает.
По умолчанию в форме стоит post, но не get.
Не верите, скачайте joomla и посмотрите сами компонент com_search.
Вообще да там стандартной форме есть input строки которые передают в url такой вид /search/?search=текст

<input name="task" value="search" type="hidden">
<input name="option" value="com_search" type="hidden">

Но совместно с другой формой поиска не ищет правильно, по этому я убрал их. И оно так же работает как надо без них, просто в url уже не передает введенный текст
Ответить с цитированием
  #48 (permalink)  
Старый 18.11.2017, 15:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ivan899
Не знаю но она работает.
По умолчанию в форме стоит post, но не get.
Не верите, скачайте joomla и посмотрите сами компонент com_search.
Речь не о том, что работает или нет, а о методах передачи. У меня есть эта CMS, мне незачем ее скачивать как и смотреть ее код, из представленного:

/component/search/?search=текст

следует только одно - параметр search передается методом GET.

Форма переданная методом POST может одновременно передать и GET параметры, это параметры перечисленные в action формы, ибо action определяет GET запрос. Все поля перечисленные в форме при этом будут переданы методом POST, в теле запроса, поэтому в URL их и не видно. То есть, например, эта форма пусть имеет поля с именами a и b, сервер получит в массиве $_POST два ключа: a, b, и в массиве $_GET ключ search.

Если поле <input name="task" value="search" type="hidden"> в форме и посредством JS не подставляется в action формы при отправке, то это поле будет передано методом POST и в GET параметры никак не попадет, то есть этого /component/search/?search=текст не будет.

Чудес не бывает, само по себе такое не возможно. Загляните лучше в код CMS и посмотрите какие параметры скрипты принимают и обрабатывают.
Ответить с цитированием
  #49 (permalink)  
Старый 18.11.2017, 16:57
Интересующийся
Отправить личное сообщение для ivan899 Посмотреть профиль Найти все сообщения от ivan899
 
Регистрация: 16.11.2017
Сообщений: 24

laimas,
Сообщение от laimas Посмотреть сообщение
Чудес не бывает
А это тогда что?
Говорю post отправляет.
Или тогда объясни почему, я мало в этом понимаю. Но пытаюсь разбираться. Может я чего то не понимаю/не знаю еще?
http://i12.pixs.ru/storage/0/5/5/1pn...5_28356055.png
http://i12.pixs.ru/storage/0/5/9/2pn...1_28356059.png


Хотя да, ты прав, оно и get тоже отправляет. Но только через стандартную форму.
http://i12.pixs.ru/storage/2/7/1/3pn...0_28356271.png
А почему при post выдает 303 ошибку?

Ладно буду дальше и лучше изучать php. А то действительно знаний в этой области недостаточно.
Спасибо всем кто помогал.

Последний раз редактировалось ivan899, 18.11.2017 в 17:20.
Ответить с цитированием
  #50 (permalink)  
Старый 18.11.2017, 17:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ivan899
А это тогда что?
Я откуда знаю чего у вас там?

Забудьте на время о Джумле. Занимаясь разработкой веб приложений, обязательно имейте на компьютере своем локальный сервер. Для серверного языка как РНР самый лучший, простой и удобный это Open Server.

В нем и тренируйтесь, изучая примеры из руководства РНР. В нем выполните и отправку формы методом POST в котором будет поле с именем search. Если при отправке формы в URL вы увидите ?search, а в скрипте в массиве $_GET найдете такой ключ, тогда можете бросить в меня камень, ибо я был не прав. Иначе будет повод задуматься, что само по себе поле не может стать параметром GET запроса будучи отправленным методом POST.

Замените потом метод передачи формы на GET (этот метод является методом по умолчанию, так что можно просто удалить у формы method="post"). Отправьте форму. В этом случае где будут имена и значения ее полей?

И это не чудеса, так определено. Поместить поле search в URL запроса можно только JS сценарием (не само поле конечно, а под именем поля определить параметр GET запроса), удалив (или нет) при этом это поле из формы. И это тоже не чудеса, это возможность на клиенте посредством активных сценариев. Все иное, это могут быть только чудеса, но их не бывает.

Последний раз редактировалось laimas, 18.11.2017 в 18:06.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение двух onclick функций Nezumi.May Общие вопросы Javascript 9 28.08.2017 13:54
Объединение двух запросов MySQL Как? zawm Серверные языки и технологии 2 28.04.2017 22:01
Откат изменений + объединение двух функций emptyindorill jQuery 8 17.02.2017 08:52
Не работает аякс в jQuery Form Ticksy jQuery 4 19.07.2011 12:55
Объединение двух событий ASerputko Общие вопросы Javascript 7 12.01.2011 15:32