Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Разбор url из переменной (https://javascript.ru/forum/css-html/46077-razbor-url-iz-peremennojj.html)

glot 27.03.2014 03:46

Разбор 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;

danik.js 27.03.2014 04:34

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 вовсе не требуется.

glot 27.03.2014 09:34

Цитата:

Сообщение от danik.js (Сообщение 304625)
var __GET = new URL(url).search.substring(1).split("&")

Именно на этой строке сбой

Aetae 27.03.2014 10:42

var __GET = url.substring(url.indexOf('?') + 1).split("&")

danik.js 27.03.2014 11:32

Упс. Я хотел написать
var __GET = (new URL(url)).search.substring(1).split("&")
Но таки да, это все избыточно. Проще вариант Aetae

danik.js 27.03.2014 11:34

А вобще, такие вещи на стороне сервера разбираются и если надо JSON-ом на страницу пишутся. Во-первых, на сервере проще работать с переменными запроса, а во-вторых, решение окажется рабочим с noscript - мелочь, а приятно. А для кого-то и не мелочь )

danik.js 27.03.2014 11:44

Фигню написал. Какой нафиг JSON с noscript )))
Всмысле, это подходит, когда нужно например значения инпутов формы проинициализировать.

glot 27.03.2014 15:09

я пишу скрипт для imacros (расширение для FF)

glot 27.03.2014 16:12

Спасибо всем, вариант от Aetae подходит, еще раз спасибо

danik.js 27.03.2014 19:59

Цитата:

Сообщение от glot
расширение для FF

А, ну тогда можно без проблем использовать new URL() :)


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