Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.03.2014, 03:46
Интересующийся
Отправить личное сообщение для glot Посмотреть профиль Найти все сообщения от glot
 
Регистрация: 26.10.2008
Сообщений: 24

Разбор url из переменной
<script type="text/javascript">
	function parseGetParams() { 
		var $_GET = {}; 
		var __GET = window.location.search.substring(1).split("&"); 
		for(var i=0; i<__GET.length; i++) { 
			var getVar = __GET[i].split("="); 
			$_GET[getVar[0]] = typeof(getVar[1])=="undefined" ? "" : getVar[1]; 
		} 
		return $_GET; 
	} 
	
	
	
	var GETArr = parseGetParams(); 
	var str = JSON.stringify(GETArr);
	var peremen = JSON.parse(str);
	var price=peremen.price;
	var number=peremen.number;

</script>

Этот скрипт разбирает url из браузера.
Подскажите как сделать чтобы сделать все тоже самое только из переменной.
допустим:
var url=xx.ru/index.php?price=12&number=5;
Ответить с цитированием
  #2 (permalink)  
Старый 27.03.2014, 04:34
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

var __GET = new URL(url).search.substring(1).split("&")

Работает не во всех браузерах, но есть костыль. $_GET, __GET, GETArr - такие имена смотрятся вырвиглазно в JS, неужели нельзя записать их в нормальном виде?
Сообщение от glot
typeof(getVar[1])=="undefined"
Во-первых, typeof - не функция, а конструкция языка, поэтому скобки тут совершенно лишние. А во-вторых, тут эта проверка не нужна. Записывается это как
getVar[1] || ''
. Ну а в-третьих, даже в случаях, когда проверка нужна, ее пишут как getVar[1] === undefined без всяких typeof. Более того, чаще всего проверка на undefined вовсе не требуется.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 27.03.2014, 09:34
Интересующийся
Отправить личное сообщение для glot Посмотреть профиль Найти все сообщения от glot
 
Регистрация: 26.10.2008
Сообщений: 24

Сообщение от danik.js Посмотреть сообщение
var __GET = new URL(url).search.substring(1).split("&")
Именно на этой строке сбой
Ответить с цитированием
  #4 (permalink)  
Старый 27.03.2014, 10:42
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

var __GET = url.substring(url.indexOf('?') + 1).split("&")
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 27.03.2014, 11:32
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Упс. Я хотел написать
var __GET = (new URL(url)).search.substring(1).split("&")
Но таки да, это все избыточно. Проще вариант Aetae
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #6 (permalink)  
Старый 27.03.2014, 11:34
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А вобще, такие вещи на стороне сервера разбираются и если надо JSON-ом на страницу пишутся. Во-первых, на сервере проще работать с переменными запроса, а во-вторых, решение окажется рабочим с noscript - мелочь, а приятно. А для кого-то и не мелочь )
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 27.03.2014, 11:44
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Фигню написал. Какой нафиг JSON с noscript )))
Всмысле, это подходит, когда нужно например значения инпутов формы проинициализировать.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #8 (permalink)  
Старый 27.03.2014, 15:09
Интересующийся
Отправить личное сообщение для glot Посмотреть профиль Найти все сообщения от glot
 
Регистрация: 26.10.2008
Сообщений: 24

я пишу скрипт для imacros (расширение для FF)
Ответить с цитированием
  #9 (permalink)  
Старый 27.03.2014, 16:12
Интересующийся
Отправить личное сообщение для glot Посмотреть профиль Найти все сообщения от glot
 
Регистрация: 26.10.2008
Сообщений: 24

Спасибо всем, вариант от Aetae подходит, еще раз спасибо
Ответить с цитированием
  #10 (permalink)  
Старый 27.03.2014, 19:59
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от glot
расширение для FF
А, ну тогда можно без проблем использовать new URL()
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение url адреса в переменной Paltusssss Общие вопросы Javascript 1 07.11.2013 20:38
Передача переменной в url Lynatik Events/DOM/Window 2 11.09.2012 15:15
Водяной знак на fancybox bobrina Общие вопросы Javascript 1 03.06.2011 21:11
как передовать и парсить значение переменной по URL? FATALITY Общие вопросы Javascript 10 25.03.2010 19:32
Добавление переменной в URL и ее чтение Espoir Элементы интерфейса 1 14.07.2009 13:08