Проблема с использованием decodeURIComponent

Я пытаюсь декодировать%20 ​​в URL-ссылке, чтобы я не мог получить свое значение, не добавляя%20 в текстовое поле, когда я декодирую код с текущей страницы на следующую страницу, ниже мое кодирование для декодирования%20 и где я размещаю

function loadRecord(i){
    var item=dataset.item(i);
    fname.value = item['fname'];
    id.value = item['id'];
    window.location.href = decodeURIComponent("userup2.html?id="+item['id']+"&fname="+item['fname']+"&val=300");
    return false;
}

Это текущий и будет перенаправлен на вторую страницу для отображения данных

почему он по-прежнему отображает%20, хотя я кодирую decodeURIComponent? пожалуйста помоги

2 ответа

Решение

Вы должны декодировать URI, когда он передается на ваш ввод. Расшифровывая это, чтобы передать это window.location правильно, но браузер снова его покинет.

Я предполагаю, что вы берете входное значение из параметров. Так, где вы устанавливаете значение ввода из параметров (в вашем случае, безусловно, в документе userup2.html, вы должны декодировать URI.

Поэтому, когда вы устанавливаете входное значение из параметров, вы должны снова его декодировать:

document.getElementByTagName('input').value = decodeURI(...your code to get the params);

почему он по-прежнему отображает%20, хотя я кодирую decodeURIComponent?

Браузер кодирует URL, чтобы сделать его действительным URL. Даже если вы декодируете его, он снова назначается window.location.href, поэтому элемент управления возвращается в браузер.

Вы не можете обойти это. Вместо этого расшифруйте URL на принимающей стороне.

Другие вопросы по тегам