Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как получить значение GET параметра (https://javascript.ru/forum/events/52010-kak-poluchit-znachenie-get-parametra.html)

user_name 30.11.2014 12:35

Как получить значение GET параметра
 
Привет!
Есть url с get параметрами param1=1&param2=2 Вопрос как вытащить значение param1 ? Через js

user_name 30.11.2014 12:48

Неужели вариантов попроще этого нет? http://stackoverflow.com/questions/9...-in-javascript

danik.js 30.11.2014 12:53

Вытаскивай на сервере. Тебе че с этими параметрами надо делать?

user_name 30.11.2014 13:08

На сервере мне нинужно. У меня при нажатии на кнопку должен браться get параметр id из url (в js), кнопка такая и на других страницах где id другой. и аяксом передаю например post параметр id_product = переменная,тот самый уникальный get параметр из url на котором эта кнопка.

danik.js 30.11.2014 13:54

<form action="/buy.php">
<input type="hidden" name="product_id" value="<?= $_GET['product_id'] ?>">
<button type="submit">Купить</button>
</form>

user_name 30.11.2014 14:16

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

danik.js 30.11.2014 14:31

Дык ты не выводи кнопку Купить пока не будет выбран размер.
Ну и от аякса я не требую отказаться. Просто предложил вариант передачи нужного параметра удобным способом. Ведь на серваке парсер параметров уже встроен, так нафига велосипедить? К тому же заяксить форму очень просто, благодаря serialize()

user_name 30.11.2014 14:38

Возникла такая мысль, можно ли так сделать?
получаем переменную при клике на кнопку
var name = $.trim($('#addCart').val());
и дальше подставить это значение в параметр product_id
<button id="addCart" value="<?=$_GET["id"]?>">Добавить в корзину</button>

danik.js 30.11.2014 14:41

Ну дык тоже самое, только ты вместо serialize() все вручную делаешь. Эффект тот же, только кода больше )

danik.js 30.11.2014 14:42

А вобще, нужно думать чтобы работало как со скриптами, так и без них.
Я скорее закрою сайт, чем включу js. Если он не какой-нибудь уникальный.

user_name 30.11.2014 14:49

И какой же пользователь отключит js. Если он не какой-нибудь уникальный.

Vlasenko Fedor 30.11.2014 15:10

danik.js,
чет ты херню написал вот в этом участке value="<?= $_GET['product_id'] ?>

danik.js 30.11.2014 15:20

В плане экранирования (тут тупо (int) пойдет ) и проверки isset? Ай, ты думаешь у них других дыр и косяков нету чтоли?

Ну и для таких дел шаблонизаторы юзают.

user_name 30.11.2014 15:25

Шаблоном и сделал)

Vlasenko Fedor 30.11.2014 15:32

Пора давно на фильтры переходить http://php.net/manual/ru/book.filter.php
К примеру написал себе сахарную обертку используя filter_input и filter_var
static function _($data_name, $params = 'string', $default = null ){}

используешь
echo Filter::_('get.product_id', 'int');

Tecvid 01.12.2014 22:08

Цитата:

Сообщение от user_name
Неужели вариантов попроще этого нет? http://stackoverflow.com/questions/9...-in-javascript

это сойдёт? :)

var get = {};

if (location.search) {
    var c = location.search.substring(1).split('&');
    
    for (var i = 0; i < c.length; i++) { 
        var ar = c[i].split('=');
        
        if (ar[0] != '') {
            get[ar[0]] = unescape(ar[1]);
        }
    }
}

// использование
var query = get['query']; // $query = $_GET['query'];

danik.js 01.12.2014 22:19

Да не нужно парсить query строку на клиенте. Че вы как дети то, с первого раза не поймете.

Tecvid 01.12.2014 22:50

Цитата:

Сообщение от danik.js
Да не нужно парсить query строку на клиенте

а чем это плох? при работе с ajax бывает полезным

Tecvid 01.12.2014 22:55

Цитата:

Сообщение от Tecvid
var c = location.search.substring(1).split('&');

тут можно и slice использовать

danik.js 01.12.2014 23:20

Цитата:

Сообщение от Tecvid
а чем это плох? при работе с ajax бывает полезным

Как правило, когда кодеру невдомек что можно сделать проще.

kostyanet 03.12.2014 17:24

Цитата:

Сообщение от user_name
и аяксом передаю например post параметр id_product = переменная,тот самый уникальный get параметр из url на котором эта кнопка.

Канонично делается вот так

<form action="http://www.example.com/proc.php/?foo=90&var=bar&baz=Lighter" method="post">


на сервере будет и $_POST и $_GET одновременно. Следовательно если вы хотите через аякс жиквери, то в свой .post вписываете точно такой же урл и получите то же самое.

kostyanet 03.12.2014 17:30

Цитата:

Сообщение от Tecvid
а чем это плох? при работе с ajax бывает полезным

Потому что search string не для js предназначается. js может ее просто взять и передать обратно. Ну то есть точно так же как это сделала бы отправленная форма или там ссылка заранее сгенереная.

Максимум что можно сделать полезного, это пересобрать урл из компонентов location чтобы, допустим, вставить правильное имя модели или скрипта. А с параметрами он сам разберется.

Ибо они по определению могут прийти с клиента _какие_угодно_ Понимаете? Если скрипт будет ждать от клиента праведных данных, он быстро станет грешником.

kostyanet 03.12.2014 17:34

У меня вообще вот так сделано

var action = form.action;
		if(!action || action.trim().length<1)
			action=location.href;


потому что пишут нельзя отгружать форму без action. Я проверять не стал, сделал затыкон. То есть все что в адресной строке есть - то пойдет в Action формы и по XMLHttpRequest уедет на сервер под грифом ("X-Requested-With", "XMLHttpRequest")

danik.js 03.12.2014 18:11

kostyanet, че за ебала. Зачем это?

danik.js 03.12.2014 18:12

Если ты не прописал атрибут action, даже пустой - пиздить тебя надо палкой.


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