javascript
2014-09-23 3 views 0 likes 
0

Я не могу с кодированием данных URI:Кодирование URL в JavaScript

var uri ="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQo..."; 
var res = encodeURI(uri); 
document.location.href = 'display.jsp?img='+res; 

После кодирования, я получаю тот же URI. display.jsp приземляется как пустая страница.

+0

это проблема JSP, не проблема JS. – dandavis

ответ

1

Нет кодировки, потому что то, что у вас есть, уже является корректным, полностью кодированным URI.

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

document.location.href = 'display.jsp?img='+encodeURIComponent(uri); 
+0

display.jsp выгрузка страницы как пустая страница. почему – user3201607

+0

Возможно, в коде 'jsp' есть ошибка? Вы должны [задать новый вопрос] (http://stackoverflow.com/questions/ask), разместить HTTP-запрос и ваш серверный код там. – Bergi

0

Это не правильно использовать encodeURI(), как эта функция кодирует специальный символ, кроме: ,/? : @ & = + $ #

Для кодирования этих символов используйте encodeURIComponent().

Для получения дополнительной информации ознакомьтесь ссылке ниже:

http://www.w3schools.com/jsref/jsref_encodeuri.asp

0

Ваша проблема в том, что функция encodeURI для принятия URL действительный для браузера, а не для форматирования содержимого в URL (который является то, что вы» re делать). Строка base64 уже отформатирована таким образом, что она регистрируется как действительная. Чтобы закодировать его как часть URL-адреса, вам необходимо использовать encodeURLComponent.

В принципе, просто использовать:

var uri ="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQo..."; 
var res = encodeURIComponent(uri); 
document.location.href = 'display.jsp?img='+res; 

Для получения дополнительной информации, проверьте: When are you supposed to use escape instead of encodeURI/encodeURIComponent?

Смежные вопросы