Расшифровка закодированных CakePHP URL в Javascript - PullRequest
0 голосов
/ 30 января 2012

Я создаю ссылки на своей странице, используя метод $ Html-> link () в cakePHP, и мой код выглядит так

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;"));

Как видно из кода, я передаю идентификатор ссылки в функцию JS. При извлечении ключевой строки song_name она отображается в виде закодированной строки, поскольку она содержит «+» вместо пробела и других символов. Это song_name на самом деле является именем файла, которое предоставляется Flowplayer для воспроизведения. Так что он должен быть свободен от закодированных вещей. Как я могу декодировать эти переменные в моей функции Javascript ..?

Ответы [ 2 ]

1 голос
/ 30 января 2012

Вы можете использовать JS-декодирование: http://www.webtoolkit.info/javascript-url-decode-encode.html

или попробуйте добавить строку для файла вручную:

echo $this->Html->link($name, $this->Html->url(substr(...), true).'?song_name=foo');
0 голосов
/ 30 января 2012

Я не думаю, что в 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;
}

, где вы создали два массива: первый с символами, которые вы хотите заменить, а второй с символами, на которые вы хотите заменить их, в том же порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...