我想要做的就是正确编码以下链接,但出于某种原因“#”给我一个问题:
var text = "hello, how are you? &am fine"
var link = "http://example.com/test#zzzzzzzzz"
url = "http://twitter.com/share?url=" + link + "&text" + text;
$("#twitter a").attr("href", url)
我尝试了encodeURI
或encodeURIComponent
,但仍然遇到“#”问题。如果我手动将“#”替换为“%23”,则由于某种原因,代码会再次编码。 jQuery attr()
是否会执行任何编码?
EDIT 尝试逃生产生
http://twitter.com/share?url=http%253A//example.com/test%2523zzzzzzzz
不确定“%25”来自哪里,而不仅仅是%23
执行encodeURIComponent
后,使用$("#twitter a").attr("href", url)
生成以下内容。 %25来自哪里?
http://twitter.com/share?url=http%253A%252F%252Fexample.com%252Ftest%2523zzzzzzzz
答案 0 :(得分:21)
encodeURIComponent
应该适合您:
var text = "hello, how are you? & fine";
var link = "http://example.com/test#zzzzzzzzz";
var url = "http://twitter.com/share?url=" + encodeURIComponent(link) + "&text=" + encodeURIComponent(text);
$('#twitter a').attr('href', url);
答案 1 :(得分:1)
encodeURIComponent不是“完整”,您可以使用这样的自定义函数(取自http://phpjs.org/functions/urlencode/):
function encode(toEncode) {
return encodeURIComponent(toEncode)
.replace(/!/g, '%21')
.replace(/'/g, '%27')
.replace(/\(/g, '%28')
.replace(/\)/g, '%29')
.replace(/\*/g, '%2A');
}
示例: var url = encode(url_plain_text);
答案 2 :(得分:0)
据Firebug说:
>>> encodeURIComponent("http://example.com/test#zzzzzzzzz")
"http%3A%2F%2Fexample.com%2Ftest%23zzzzzzzzz"
你对“#”有什么问题?
答案 3 :(得分:0)
encodeURIComponent 对我来说很好。我们可以在ajax调用中给出这样的url。代码如下所示:
$.ajax({
cache: false,
type: "POST",
url: "http://atandra.mivamerchantdev.com//mm5/json.mvc?Store_Code=ATA&Function=Module&Module_Code=thub_connector&Module_Function=THUB_Request",
data: "strChannelName=" + $('#txtupdstorename').val() + "&ServiceUrl=" + encodeURIComponent($('#txtupdserviceurl').val()),
dataType: "HTML",
success: function (data) {
},
error: function (xhr, ajaxOptions, thrownError) {
}
});