2013-12-20 4 views
4

Приведенная ниже ошибка кода с URIError: malformed URI sequence?, когда в строке URL есть %, в строке URL, откуда мне нужно извлечь значение параметра, например. http://some-external-server.com/info?progress=60%%20-%20CompletedURIError: некорректная последовательность URI?

<SCRIPT type="text/javascript"> 
      function getParameterByName(name) { 
       name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); 
       var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 
       results = regex.exec(location.search); 
       return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
      } 
    </SCRIPT> 

Я не имею контроль над сервером и нужно обработать вывод в моем HTML-страницы.

+1

возможно дубликат из [Javascript decodeURI (Component) исключаемое исключение uri] (http://stackoverflow.com/questions/9064536/javascript-decodeuricomponent-malformed-uri-exception) – Christian

+0

Возможный дубликат [Почему deco deURIComponent ('%') заблокирует мой браузер?] (http://stackoverflow.com/questions/7449588/why-does-decodeuricomponent-lock-up-my-browser) –

ответ

3

Я думаю, что вам нужно URI кодирования знак процента как '% 25'

http://some-external-server.com/info?progress=60%25%20-%20Completed 

[EDIT]

Я думаю, вы могли бы сделать что-то вроде этого:

var str = "60%%20-%20completed"; 
var uri_encoded = str.replace(/%([^\d].)/, "%25$1"); 
console.log(str); // "60%25%20-%20completed" 
var decoded = decodeURIComponent(uri_encoded); 
console.log(decoded); // "60% - completed" 
+0

Как упоминалось выше - я не контролирую сервер и нужно обработать вывод на моей странице html. – Stacked

+0

Возможно, вы не сможете использовать decodeURIComponent, или вам может потребоваться предварительно обработать URL-адрес, прежде чем передавать его этой функции. Являются ли пробелы единственными другими особыми символами, которые вы можете ожидать в URL? – Slicedpan

+0

Нет, в URL могут быть другие специальные символы. Что угодно, что позволит мне извлечь значение параметра в этом условии? – Stacked

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