我使用cakePHP中的$ Html-> link()menthod在我的页面上生成链接,我的代码就像这样
echo $this->Html->link(substr($topsongs[$i]['song_details']['song_name'], 0, 18), array("?"=>array('song_name'=>$song,'song_id'=>$song_id)), array('class' => 'top_links link', 'id' => 'playlist-add' . $i, 'onclick' => "link_play(this.id);return false;"));
如代码所示,我将链接ID传递给JS函数。当重新审视song_name keystring时,它显示为编码字符串,因为它包含“+”而不是空格和其他字符。此song_name实际上是一个提供给Flowplayer进行播放的文件名。所以它必须摆脱编码的东西。如何在我的Javascript函数中解码这些变量..?
答案 0 :(得分:1)
你可以使用一些js解码: http://www.webtoolkit.info/javascript-url-decode-encode.html
或尝试手动附加文件的字符串:
echo $this->Html->link($name, $this->Html->url(substr(...), true).'?song_name=foo');
答案 1 :(得分:0)
我认为在javascript中没有一种直接的方式来“解码”那种字符串。 你能做的是
link = link.replace('+', ' ');
并为其他角色做同样的事情......
最终,你可以构建一个类似这样的函数:
function decode(string){
var encoded = ['+', 'a', 'b', 'c'];
var decoded = [' ', ' ', ' ', ' '];
for (var i = 0; i < encoded.length; i++){
string = string.replace(encoded[i], decoded[i]);
}
return string;
}
你设置两个数组,第一个是你想要替换的字符,第二个是你要用它们替换它们的字符,顺序相同。