У меня есть очень некрасивый кусок кода в PHP, что делает что-то вроде этого:Передача закодированной переменной из php и декодирования в javascript?
for ($i = 0; $i <= ($fi_int-1); $i++) {
$song_uri = urlencode($songs[$i]);
echo "URI: " . $song_uri . "<br>";
echo "<li><a href='#' onclick='PlaySong(".$song_uri.")'>" . $songs[$i] . "</li><br>";
}
Теперь, когда PlaySong() вызывается, это происходит:
<script>
function PlaySong(title) {
title = decodeURIcomponent(title));
document.getElementById("player").src = "./mp3/" + title;
}
</script>
Текущая проблема, когда $ песни [$ я] в настоящее время передается PlaySong(), похоже, что сразу:
PlaySong(Name+Of+The+Song+-+Artist+LastName+blah) {
...
}
Так JS, очевидно, имеет проблемы с ним. Он пытается добавить вещи, потому что есть плюсы ... Теперь, как я могу преобразовать этот беспорядок в строку прямо, когда он входит? Или есть лучший способ сделать это? Я уверен, что есть, но это уродство строго для меня, поэтому я не слишком забочусь о быстрой работе :)
Я не понимаю проблему. Вы 'urlencode' строку, так что вы в конечном итоге с urlencoded строки. Плюсы - это пробелы в urlencoded строках, так что в этом плохого? – tkausl
@tkausl Что именно не так, так это то, что он не работает. Моя идея, как я описал выше, почему она не работает, заключается в том, что, когда js берет верх, внутри списка параметров функции PlaySong(), есть бесполезная нагрузка беспорядка, которая гласит: «Возьмите имя», добавьте его в «Добавить», чтобы добавить в «Добавить» что назвать и так далее. Поэтому не имеет значения, что я пытаюсь расшифровать позже, еще до этого, в части аргумента функции он уже запутывается. Но, возможно, я ошибаюсь. Факт по-прежнему остается прежним - эта схема не работает :( – Micard