Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   javascript _GET помогите решить вопрос, а то долго мучаюсь (https://javascript.ru/forum/misc/54456-javascript-_get-pomogite-reshit-vopros-dolgo-muchayus.html)

sidor84 18.03.2015 00:52

javascript _GET помогите решить вопрос, а то долго мучаюсь
 
:help: :help:
ну кароч постараюсь подробно описать суть вопроса.

на сайте есть выбор региона (города страны).
Это реализовано через select >> option
В Option данные подтягиваются из БД

при выборе конкретного города, его ID передается в GET .
Передается следующим js кодом:
onchange = "document.getElementById('element').submit();"

после выбора получается:
http://infor.com.ua/index.php?region_select=2

Жирным-подчеркнутым выделил то что передалось при выборе региона.

И все прекрасно работает.
НО...
Если пользователь переходит на другую страницу сайта, где уже есть в GET другие элементы пример(http://infor.com.ua/objav_parent.php..._select=2&id=3)

ТО на этой странице, при выборе региона? сбивается id, и остается только переданые данные. получается вот как:
http://infor.com.ua/objav_parent.php?region_select=30
а хотелось бы получить просто изменение region_select региона
http://infor.com.ua/objav_parent.php...select=30&id=3


Можете помочь кто нибудь, ну или хотя бы в какую сторону двигаться, а то я уже аш запарился мудрить с этим функционалом!
:help: :cray: :help: :cray:

laimas 18.03.2015 04:52

Если get-параметры в url подставляется клиентский сценарий, то делать он должен как раз не так, как выделено жирным, а добавлять их с учетом существующих или нет других параметров. Вот и двигайтесь в то место, где эта операция производится.

danik.js 18.03.2015 06:48

Добавь форме атрибут method="post".
Цитата:

Сообщение от laimas
Если get-параметры в url подставляется клиентский сценарий

Ты разве не в курсе про html-формы? Браузер сам собирает get-параметры при формировании запроса. Проблема в том что браузер отпрасывает старые get-паметры из action формы и формирует новые. Поэтому тут нужен post-запрос. Да и не нужно светить ненужными параметрами в адресной строке.

laimas 18.03.2015 07:16

В курсе конечно. Я ошибку допустил, думая о сервере, написал о клиенте. А я так и понял, что так и есть - post с get в action, но теряют на сервере пришедшие параметры, и надо было бы http_build_query().

Но наверно да, не так понял.

sidor84 18.03.2015 10:02

ну post мне тут ваще не подойдет, с гетом как то попроще будет. Я думаю может в идеале в сессию записать данные выбранные по региону!?, если да, подскажите плз, как это сделать. ... причем, опять же, в сессию добавить данные не затирая существующие в ней другие данные. есть какие-то мысли?

laimas 18.03.2015 10:11

Я вот зациклился на ID и id, отбросив в сторону то, что первое, это имелось ввиду ID значения, и совсем не то представил.

Можно и в сессию записать, но это ведь тоже означает изменение логики работы в скрипте, так почему не заменить обработку GET на POST, который ничем не сложнее первого. Если же ничего не переделывать, то передавайте этот "теряющийся" id между страницами в скрытом поле формы.

sidor84 18.03.2015 12:56

так не пойдет. пользователь не будет постоянно, на каждой странице использовать эту форму, поэтому по Вашей логике, постом можно отправить в переменную. но как мне зафиксировать выбранное значение на все время пользования(пока из формы опять незахочет поменять). ибо пользователь может ходить по сайту используя разные ссылки, а мне, ваще не вариант, прописывать в каждую ссылку данные из переменной полученных от первого POSTa.

конечно, как мне кажется, идеальным вариантом был бы вариант с get, а еще лучше передать в сессию.

подскажите как в сессию передать?

sidor84 18.03.2015 13:05

+ забыл уточнить, при каждом же переходе, данные формы устанавливаются на region_select=0 . ну типа поле по умолчанию "выбрать регион:" . и соответственно в переменной выбраный region_select перезаписывается на 0 ...

laimas 18.03.2015 17:22

Это не моя логика, моя логика дала сбой сразу, потому как ваш пост почему-то здесь, а причем тут JS, если надо что-то запомнить?
У вас же проблема была в том, что теряется, не подходит POST, значит скрытым полем в GET. А запомнить на сервере, это значит проверить:

if($_SESSION['keyname']) {
    //что-то делаем, если есть в сессии ключ
    //или есть и не равен 0, хотя смысла запомнить 0 нет
}


JS для этого совсем не нужен.

sidor84 18.03.2015 23:24

JS использую для того чтобы при выборе региона, срабатывал submit без физического нажатия на кнопку. если это можно как то решить посредством PHP, напишите пжлста как это сделать... и действительно вопрос решен будет. по скольку яваскриптом отправляется только select_region(id-его)


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