Вставка в get заброс/обновление данных в get запросе
Доброго времени суток читающему.
Написал функцию, функция работает, но выглядит сложновато. А где сложно там и ошибки, и лишний код очень и очень часто встречаются. Итак, форумчане, прошу конструктивной критики:) function insertIntoGet(key, value) { var res = '?'; if (location.search.length > 0) { var search = location.search.substr(1); var arSearch = search.split('&'); var isHaveKey = false; arSearch.forEach(function (el, i, arr) { var arEl = el.split('='); if (arEl[0] == key) { arEl[1] = value; el = (value != "") ? arEl.join('=') : ""; arr[i] = el; isHaveKey = true; } }); res += arSearch.join('&') + (!isHaveKey ? "&" + key + "=" + value : ""); if (res == "?") res = ""; } else { res += key + "=" + value; } return encodeURI(location.origin + location.pathname + res + location.hash); } |
Разбейте на несколько функций, примеры
function getUrlVars() { var vars = {}; location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(_,key,value) {vars[key] = value}); return vars; } и function encodeData(data) { var pairs = [], value = ''; for (var name in data) { if (data.hasOwnProperty(name)) { pairs.push(name + '=' + data[name]); } } return pairs.join('&'); } и function insertIntoGet(key, value) { var obj = getUrlVars(); obj[key] = value; return '?' + encodeData(obj); } |
Взято тут:
https://github.com/medialize/URI.js/ I always want to shoot myself in the head when looking at code like the following: |
Часовой пояс GMT +3, время: 21:14. |