Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.12.2018, 01:00
Новичок на форуме
Отправить личное сообщение для Wild_Wolf Посмотреть профиль Найти все сообщения от Wild_Wolf
 
Регистрация: 04.03.2017
Сообщений: 1

Вставка в 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);
    }
Ответить с цитированием
  #2 (permalink)  
Старый 13.12.2018, 03:48
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Разбейте на несколько функций, примеры
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);
}

Последний раз редактировалось Vlasenko Fedor, 13.12.2018 в 13:00.
Ответить с цитированием
  #3 (permalink)  
Старый 13.12.2018, 15:34
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

Взято тут:
https://github.com/medialize/URI.js/

I always want to shoot myself in the head when looking at code like the following:
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка данных при выборе дочернего элемента дерева Aleks8801 Элементы интерфейса 1 04.11.2016 17:17
Значение переменной в запросе к локальной базе данных Tecos Общие вопросы Javascript 2 31.01.2013 16:27
Тупик... Вставка данных в зависимости от SELECT xaocbozzz Элементы интерфейса 3 03.05.2012 04:57
Двойная Фильтрация данных таблицы David0707 Общие вопросы Javascript 0 19.03.2012 13:00
Вставка данных в textarea из модального окна (для Markitup) Roman Koff jQuery 0 26.08.2010 23:21