Как получить значение из параметров GET?

Как создать функцию, которая загружает файл и запускает пользовательское событие. Затем присоедините слушателя к входу. Таким образом, у нас больше гибкости в использовании файла, а не только для предварительного просмотра изображений.

/**
 * @param {domElement} input - The input element
 * @param {string} typeData - The type of data to be return in the event object. 
 */
function loadFileFromInput(input,typeData) {
    var reader,
        fileLoadedEvent,
        files = input.files;

    if (files && files[0]) {
        reader = new FileReader();

        reader.onload = function (e) {
            fileLoadedEvent = new CustomEvent('fileLoaded',{
                detail:{
                    data:reader.result,
                    file:files[0]  
                },
                bubbles:true,
                cancelable:true
            });
            input.dispatchEvent(fileLoadedEvent);
        }
        switch(typeData) {
            case 'arraybuffer':
                reader.readAsArrayBuffer(files[0]);
                break;
            case 'dataurl':
                reader.readAsDataURL(files[0]);
                break;
            case 'binarystring':
                reader.readAsBinaryString(files[0]);
                break;
            case 'text':
                reader.readAsText(files[0]);
                break;
        }
    }
}
function fileHandler (e) {
    var data = e.detail.data,
        fileInfo = e.detail.file;

    img.src = data;
}
var input = document.getElementById('inputId'),
    img = document.getElementById('imgId');

input.onchange = function (e) {
    loadFileFromInput(e.target,'dataurl');
};

input.addEventListener('fileLoaded',fileHandler)

Наверное, мой код не так хорош, как некоторые пользователи, но я думаю, вы его получите. Здесь вы можете увидеть пример

1158
задан Daniel Serodio 12 August 2016 в 18:25
поделиться

5 ответов

Сам JavaScript не имеет ничего встроенного для обработки параметров строки запроса.

Код, работающий в (современном) браузере, вы можете использовать URL объект (который является частью API, предоставляемых браузерами для JS):

 var url_string = "http: / /www.example.com/t.html?a=1&b=3&c=m2-m3-m4-m5 "; //window.location.href var url = новый URL (url_string); var c = url.searchParams.get ("c"); console.log (c); 

Для старых браузеров (включая Internet Explorer) вы можете использовать этот полифилл или код из исходной версии этого ответа, предшествующий URL :

Вы можете получить доступ к location.search , что даст вам от символа ? до конца URL-адреса или начала идентификатора фрагмента (#foo), в зависимости от того, что наступит раньше.

Затем вы можете проанализировать это следующим образом:

 function parse_query_string (query) {var vars = query.split ("&"); var query_string = {}; для (var i = 0; i 

Вы можете получить строку запроса из URL-адреса текущей страницы с помощью:

var query = window.location.search.substring(1);
var qs = parse_query_string(query);
1849
ответ дан 19 December 2019 в 20:15
поделиться

source

function gup( name, url ) {
    if (!url) url = location.href;
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec( url );
    return results == null ? null : results[1];
}
gup('q', 'hxxp://example.com/?q=abc')
228
ответ дан 19 December 2019 в 20:15
поделиться

Вы можете получить строку запроса в location.search , тогда вы можете разделить все после вопросительного знака:

var params = {};

if (location.search) {
    var parts = location.search.substring(1).split('&');

    for (var i = 0; i < parts.length; i++) {
        var nv = parts[i].split('=');
        if (!nv[0]) continue;
        params[nv[0]] = nv[1] || true;
    }
}

// Now you can get the parameters you want like so:
var abc = params.abc;
76
ответ дан 19 December 2019 в 20:15
поделиться

В большинстве реализаций, которые я видел, отсутствует URL-декодирование имен и значений.

Вот общая служебная функция, которая также выполняет правильное URL-декодирование:

function getQueryParams(qs) {
    qs = qs.split('+').join(' ');

    var params = {},
        tokens,
        re = /[?&]?([^=]+)=([^&]*)/g;

    while (tokens = re.exec(qs)) {
        params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);
    }

    return params;
}

//var query = getQueryParams(document.location.search);
//alert(query.foo);
240
ответ дан 19 December 2019 в 20:15
поделиться

Изящное, функциональное решение

для стиля Позволяет нам создать объект, содержащий имена параметрического усилителя URL как ключи, затем мы можем легко извлечь параметр его именем:

// URL: https://example.com/?test=true&orderId=9381  

// Build an object containing key-value pairs
export const queryStringParams = window.location.search
  .split('?')[1]
  .split('&')
  .map(keyValue => keyValue.split('='))
  .reduce<QueryStringParams>((params, [key, value]) => {
    params[key] = value;
    return params;
  }, {});

type QueryStringParams = {
  [key: string]: string;
};


// Return URL parameter called "orderId"
return queryStringParams.orderId;
3
ответ дан 19 December 2019 в 20:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: