dod*_*onl 292 javascript urlencode
我正在编码一个将在URL中传递的字符串(通过GET).但是,如果我使用escape
,encodeURI
或者encodeURIComponent
,&
将被替换%26amp%3B
,但我希望它被替换%26
.我究竟做错了什么?
And*_*y E 436
没有看到你的代码,除了在黑暗中刺伤之外,很难回答.我猜你正在传递给encodeURIComponent()的字符串,这是正确使用的方法,来自访问innerHTML属性的结果.解决方案是获取innerText/textContent属性值:
var str,
el = document.getElementById("myUrl");
if ("textContent" in el)
str = encodeURIComponent(el.textContent);
else
str = encodeURIComponent(el.innerText);
Run Code Online (Sandbox Code Playgroud)
如果不是这种情况,您可以使用replace()方法替换HTML实体:
encodeURIComponent(str.replace(/&/g, "&"));
Run Code Online (Sandbox Code Playgroud)
Nic*_*ver 94
如果你真的这样做:
encodeURIComponent('&')
Run Code Online (Sandbox Code Playgroud)
然后结果是%26
,你可以在这里测试它.确保您编码的字符串是正确的 &
而不是&
开头...否则它正确编码,这可能就是这种情况.如果由于某种原因需要不同的结果,可以.replace(/&/g,'&')
在编码之前执行.
有 HTML 和 URI 编码。&
以&
HTML 编码,而%26
以URI&
编码。
因此,在对字符串进行 URI 编码之前,您可能需要先进行 HTML 解码,然后再对其进行 URI 编码:)
var div = document.createElement('div');
div.innerHTML = '&AndOtherHTMLEncodedStuff';
var htmlDecoded = div.firstChild.nodeValue;
console.log('htmlDecoded: '+htmlDecoded);
var urlEncoded = encodeURIComponent(htmlDecoded);
console.log('urlEncoded: '+urlEncoded);
Run Code Online (Sandbox Code Playgroud)
结果%26AndOtherHTMLEncodedStuff
希望这可以节省您一些时间
归档时间: |
|
查看次数: |
377753 次 |
最近记录: |